mirror of
				https://github.com/aap/librw.git
				synced 2025-10-31 23:19:32 +00:00 
			
		
		
		
	added some consts :(
This commit is contained in:
		
							parent
							
								
									4f5687dd2e
								
							
						
					
					
						commit
						9fc46eac37
					
				
							
								
								
									
										16
									
								
								src/base.cpp
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								src/base.cpp
									
									
									
									
									
								
							| @ -130,7 +130,7 @@ cross(const V3d &a, const V3d &b) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| V3d::transformPoints(V3d *out, V3d *in, int32 n, Matrix *m) | V3d::transformPoints(V3d *out, const V3d *in, int32 n, const Matrix *m) | ||||||
| { | { | ||||||
| 	int32 i; | 	int32 i; | ||||||
| 	V3d tmp; | 	V3d tmp; | ||||||
| @ -143,7 +143,7 @@ V3d::transformPoints(V3d *out, V3d *in, int32 n, Matrix *m) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| V3d::transformVectors(V3d *out, V3d *in, int32 n, Matrix *m) | V3d::transformVectors(V3d *out, const V3d *in, int32 n, const Matrix *m) | ||||||
| { | { | ||||||
| 	int32 i; | 	int32 i; | ||||||
| 	V3d tmp; | 	V3d tmp; | ||||||
| @ -263,7 +263,7 @@ Matrix::optimize(Tolerance *tolerance) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Matrix* | Matrix* | ||||||
| Matrix::mult(Matrix *dst, Matrix *src1, Matrix *src2) | Matrix::mult(Matrix *dst, const Matrix *src1, const Matrix *src2) | ||||||
| { | { | ||||||
| 	if(src1->flags & IDENTITY) | 	if(src1->flags & IDENTITY) | ||||||
| 		*dst = *src2; | 		*dst = *src2; | ||||||
| @ -277,7 +277,7 @@ Matrix::mult(Matrix *dst, Matrix *src1, Matrix *src2) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Matrix* | Matrix* | ||||||
| Matrix::invert(Matrix *dst, Matrix *src) | Matrix::invert(Matrix *dst, const Matrix *src) | ||||||
| { | { | ||||||
| 	if(src->flags & IDENTITY) | 	if(src->flags & IDENTITY) | ||||||
| 		*dst = *src; | 		*dst = *src; | ||||||
| @ -290,7 +290,7 @@ Matrix::invert(Matrix *dst, Matrix *src) | |||||||
| 
 | 
 | ||||||
| // transpose the 3x3 submatrix, pos is set to 0
 | // transpose the 3x3 submatrix, pos is set to 0
 | ||||||
| Matrix* | Matrix* | ||||||
| Matrix::transpose(Matrix *dst, Matrix *src) | Matrix::transpose(Matrix *dst, const Matrix *src) | ||||||
| { | { | ||||||
| 	if(src->flags & IDENTITY) | 	if(src->flags & IDENTITY) | ||||||
| 		*dst = *src; | 		*dst = *src; | ||||||
| @ -462,7 +462,7 @@ Matrix::lookAt(const V3d &dir, const V3d &up) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| Matrix::mult_(Matrix *dst, Matrix *src1, Matrix *src2) | Matrix::mult_(Matrix *dst, const Matrix *src1, const Matrix *src2) | ||||||
| { | { | ||||||
| 	dst->right.x = src1->right.x*src2->right.x + src1->right.y*src2->up.x + src1->right.z*src2->at.x; | 	dst->right.x = src1->right.x*src2->right.x + src1->right.y*src2->up.x + src1->right.z*src2->at.x; | ||||||
| 	dst->right.y = src1->right.x*src2->right.y + src1->right.y*src2->up.y + src1->right.z*src2->at.y; | 	dst->right.y = src1->right.x*src2->right.y + src1->right.y*src2->up.y + src1->right.z*src2->at.y; | ||||||
| @ -479,7 +479,7 @@ Matrix::mult_(Matrix *dst, Matrix *src1, Matrix *src2) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| Matrix::invertOrthonormal(Matrix *dst, Matrix *src) | Matrix::invertOrthonormal(Matrix *dst, const Matrix *src) | ||||||
| { | { | ||||||
| 	dst->right.x = src->right.x; | 	dst->right.x = src->right.x; | ||||||
| 	dst->right.y = src->up.x; | 	dst->right.y = src->up.x; | ||||||
| @ -503,7 +503,7 @@ Matrix::invertOrthonormal(Matrix *dst, Matrix *src) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Matrix* | Matrix* | ||||||
| Matrix::invertGeneral(Matrix *dst, Matrix *src) | Matrix::invertGeneral(Matrix *dst, const Matrix *src) | ||||||
| { | { | ||||||
| 	float32 det, invdet; | 	float32 det, invdet; | ||||||
| 	// calculate a few cofactors
 | 	// calculate a few cofactors
 | ||||||
|  | |||||||
| @ -265,7 +265,11 @@ setRwRenderState(int32 state, uint32 value) | |||||||
| 		}; | 		}; | ||||||
| 		break; | 		break; | ||||||
| 	case FOGCOLOR:{ | 	case FOGCOLOR:{ | ||||||
| 		RGBA c = *(RGBA*)&value; | 		RGBA c; | ||||||
|  | 		c.red = value; | ||||||
|  | 		c.green = value>>8; | ||||||
|  | 		c.blue = value>>16; | ||||||
|  | 		c.alpha = value>>24; | ||||||
| 		if(!equal(fogcolor, c)){ | 		if(!equal(fogcolor, c)){ | ||||||
| 			fogcolor = c; | 			fogcolor = c; | ||||||
| 			setRenderState(D3DRS_FOGCOLOR, D3DCOLOR_RGBA(c.red, c.green, c.blue, c.alpha)); | 			setRenderState(D3DRS_FOGCOLOR, D3DCOLOR_RGBA(c.red, c.green, c.blue, c.alpha)); | ||||||
| @ -308,7 +312,7 @@ getRwRenderState(int32 state) | |||||||
| 	case FOGENABLE: | 	case FOGENABLE: | ||||||
| 		return fogenable; | 		return fogenable; | ||||||
| 	case FOGCOLOR: | 	case FOGCOLOR: | ||||||
| 		return *(uint32*)&fogcolor; | 		return RWRGBAINT(fogcolor.red, fogcolor.green, fogcolor.blue, fogcolor.alpha); | ||||||
| 	case CULLMODE: | 	case CULLMODE: | ||||||
| 		return cullmode; | 		return cullmode; | ||||||
| 	case ALPHATESTFUNC: | 	case ALPHATESTFUNC: | ||||||
|  | |||||||
| @ -191,7 +191,12 @@ setRenderState(int32 state, uint32 value) | |||||||
| 		break; | 		break; | ||||||
| 	case FOGCOLOR: | 	case FOGCOLOR: | ||||||
| 		// no cache check here...too lazy
 | 		// no cache check here...too lazy
 | ||||||
| 		convColor(&uniformState.fogColor, (RGBA*)&value); | 		RGBA c; | ||||||
|  | 		c.red = value; | ||||||
|  | 		c.green = value>>8; | ||||||
|  | 		c.blue = value>>16; | ||||||
|  | 		c.alpha = value>>24; | ||||||
|  | 		convColor(&uniformState.fogColor, &c); | ||||||
| 		stateDirty = 1; | 		stateDirty = 1; | ||||||
| 		break; | 		break; | ||||||
| 	case CULLMODE: | 	case CULLMODE: | ||||||
| @ -237,7 +242,7 @@ getRenderState(int32 state) | |||||||
| 		return uniformState.fogEnable; | 		return uniformState.fogEnable; | ||||||
| 	case FOGCOLOR: | 	case FOGCOLOR: | ||||||
| 		convColor(&rgba, &uniformState.fogColor); | 		convColor(&rgba, &uniformState.fogColor); | ||||||
| 		return *(uint32*)&rgba; | 		return RWRGBAINT(rgba.red, rgba.green, rgba.blue, rgba.alpha); | ||||||
| 	case CULLMODE: | 	case CULLMODE: | ||||||
| 		return cullmode; | 		return cullmode; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								src/rwbase.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/rwbase.h
									
									
									
									
									
								
							| @ -132,6 +132,7 @@ struct RGBA | |||||||
| }; | }; | ||||||
| inline RGBA makeRGBA(uint8 r, uint8 g, uint8 b, uint8 a) { RGBA c = { r, g, b, a }; return c; } | inline RGBA makeRGBA(uint8 r, uint8 g, uint8 b, uint8 a) { RGBA c = { r, g, b, a }; return c; } | ||||||
| inline bool32 equal(const RGBA &c1, const RGBA &c2) { return c1.red == c2.red && c1.green == c2.green && c1.blue == c2.blue && c1.alpha == c2.alpha; } | inline bool32 equal(const RGBA &c1, const RGBA &c2) { return c1.red == c2.red && c1.green == c2.green && c1.blue == c2.blue && c1.alpha == c2.alpha; } | ||||||
|  | #define RWRGBAINT(r, g, b, a) ((uint32)((((a)&0xff)<<24)|(((b)&0xff)<<16)|(((g)&0xff)<<8)|((r)&0xff))) | ||||||
| 
 | 
 | ||||||
| struct RGBAf | struct RGBAf | ||||||
| { | { | ||||||
| @ -207,8 +208,8 @@ struct V3d | |||||||
| 	float32 x, y, z; | 	float32 x, y, z; | ||||||
| 	void set(float32 x, float32 y, float32 z){ | 	void set(float32 x, float32 y, float32 z){ | ||||||
| 		this->x = x; this->y = y; this->z = z; } | 		this->x = x; this->y = y; this->z = z; } | ||||||
| 	static void transformPoints(V3d *out, V3d *in, int32 n, Matrix *m); | 	static void transformPoints(V3d *out, const V3d *in, int32 n, const Matrix *m); | ||||||
| 	static void transformVectors(V3d *out, V3d *in, int32 n, Matrix *m); | 	static void transformVectors(V3d *out, const V3d *in, int32 n, const Matrix *m); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| inline V3d makeV3d(float32 x, float32 y, float32 z) { V3d v = { x, y, z }; return v; } | inline V3d makeV3d(float32 x, float32 y, float32 z) { V3d v = { x, y, z }; return v; } | ||||||
| @ -318,9 +319,9 @@ struct Matrix | |||||||
| 	void setIdentity(void); | 	void setIdentity(void); | ||||||
| 	void optimize(Tolerance *tolerance = nil); | 	void optimize(Tolerance *tolerance = nil); | ||||||
| 	void update(void) { flags &= ~(IDENTITY|TYPEMASK); } | 	void update(void) { flags &= ~(IDENTITY|TYPEMASK); } | ||||||
| 	static Matrix *mult(Matrix *dst, Matrix *src1, Matrix *src2); | 	static Matrix *mult(Matrix *dst, const Matrix *src1, const Matrix *src2); | ||||||
| 	static Matrix *invert(Matrix *m1, Matrix *m2); | 	static Matrix *invert(Matrix *dst, const Matrix *src); | ||||||
| 	static Matrix *transpose(Matrix *m1, Matrix *m2); | 	static Matrix *transpose(Matrix *dst, const Matrix *src); | ||||||
| 	Matrix *rotate(V3d *axis, float32 angle, CombineOp op); | 	Matrix *rotate(V3d *axis, float32 angle, CombineOp op); | ||||||
| 	Matrix *rotate(const Quat &q, CombineOp op); | 	Matrix *rotate(const Quat &q, CombineOp op); | ||||||
| 	Matrix *translate(V3d *translation, CombineOp op); | 	Matrix *translate(V3d *translation, CombineOp op); | ||||||
| @ -330,9 +331,9 @@ struct Matrix | |||||||
| 	void lookAt(const V3d &dir, const V3d &up); | 	void lookAt(const V3d &dir, const V3d &up); | ||||||
| 
 | 
 | ||||||
| 	// helper functions. consider private
 | 	// helper functions. consider private
 | ||||||
| 	static void mult_(Matrix *dst, Matrix *src1, Matrix *src2); | 	static void mult_(Matrix *dst, const Matrix *src1, const Matrix *src2); | ||||||
| 	static void invertOrthonormal(Matrix *dst, Matrix *src); | 	static void invertOrthonormal(Matrix *dst, const Matrix *src); | ||||||
| 	static Matrix *invertGeneral(Matrix *dst, Matrix *src); | 	static Matrix *invertGeneral(Matrix *dst, const Matrix *src); | ||||||
| 	static void makeRotation(Matrix *dst, V3d *axis, float32 angle); | 	static void makeRotation(Matrix *dst, V3d *axis, float32 angle); | ||||||
| 	static void makeRotation(Matrix *dst, const Quat &q); | 	static void makeRotation(Matrix *dst, const Quat &q); | ||||||
| private: | private: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user