Re-enable VisualEffect.scale() but reallocate the mesh vertex lists properly this time.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@5264 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
c217d53c8a
commit
a2a5b0f8b8
@ -170,6 +170,7 @@ typedef struct
|
|||||||
- (BoundingBox) findSubentityBoundingBoxWithPosition:(Vector)position rotMatrix:(OOMatrix)rotMatrix;
|
- (BoundingBox) findSubentityBoundingBoxWithPosition:(Vector)position rotMatrix:(OOMatrix)rotMatrix;
|
||||||
|
|
||||||
- (OOMesh *) meshRescaledBy:(GLfloat)scaleFactor;
|
- (OOMesh *) meshRescaledBy:(GLfloat)scaleFactor;
|
||||||
|
- (void) copyVertexArray;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -753,11 +753,29 @@ static NSString *NormalModeDescription(OOMeshNormalMode mode)
|
|||||||
- (OOMesh *)meshRescaledBy:(GLfloat)scaleFactor
|
- (OOMesh *)meshRescaledBy:(GLfloat)scaleFactor
|
||||||
{
|
{
|
||||||
OOMesh *result = [self mutableCopy];
|
OOMesh *result = [self mutableCopy];
|
||||||
|
[result copyVertexArray];
|
||||||
[result rescaleByFactor:scaleFactor];
|
[result rescaleByFactor:scaleFactor];
|
||||||
return [result autorelease];
|
return [result autorelease];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// create copies of the vertex arrays for safe scaling
|
||||||
|
- (void) copyVertexArray
|
||||||
|
{
|
||||||
|
NSData *prevData = [_retainedObjects objectForKey:@"vertices"];
|
||||||
|
NSData *vertData = [[NSData alloc] initWithData:prevData];
|
||||||
|
[self setRetainedObject:vertData forKey:@"vertices"];
|
||||||
|
_vertices = (Vector *)[vertData bytes];
|
||||||
|
[vertData release];
|
||||||
|
|
||||||
|
NSData *prevVArray = [_retainedObjects objectForKey:@"vertexArray"];
|
||||||
|
NSData *vertArray = [[NSData alloc] initWithData:prevVArray];
|
||||||
|
[self setRetainedObject:vertArray forKey:@"vertexArray"];
|
||||||
|
_displayLists.vertexArray = (Vector *)[vertArray bytes];
|
||||||
|
[vertArray release];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)setBindingTarget:(id<OOWeakReferenceSupport>)target
|
- (void)setBindingTarget:(id<OOWeakReferenceSupport>)target
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -39,7 +39,7 @@ static JSBool VisualEffectGetProperty(JSContext *context, JSObject *this, jsid p
|
|||||||
static JSBool VisualEffectSetProperty(JSContext *context, JSObject *this, jsid propID, JSBool strict, jsval *value);
|
static JSBool VisualEffectSetProperty(JSContext *context, JSObject *this, jsid propID, JSBool strict, jsval *value);
|
||||||
|
|
||||||
static JSBool VisualEffectRemove(JSContext *context, uintN argc, jsval *vp);
|
static JSBool VisualEffectRemove(JSContext *context, uintN argc, jsval *vp);
|
||||||
//static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp);
|
static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp);
|
||||||
static JSBool VisualEffectGetShaders(JSContext *context, uintN argc, jsval *vp);
|
static JSBool VisualEffectGetShaders(JSContext *context, uintN argc, jsval *vp);
|
||||||
static JSBool VisualEffectSetShaders(JSContext *context, uintN argc, jsval *vp);
|
static JSBool VisualEffectSetShaders(JSContext *context, uintN argc, jsval *vp);
|
||||||
static JSBool VisualEffectGetMaterials(JSContext *context, uintN argc, jsval *vp);
|
static JSBool VisualEffectGetMaterials(JSContext *context, uintN argc, jsval *vp);
|
||||||
@ -105,7 +105,7 @@ static JSFunctionSpec sVisualEffectMethods[] =
|
|||||||
{ "getMaterials", VisualEffectGetMaterials, 0 },
|
{ "getMaterials", VisualEffectGetMaterials, 0 },
|
||||||
{ "getShaders", VisualEffectGetShaders, 0 },
|
{ "getShaders", VisualEffectGetShaders, 0 },
|
||||||
{ "remove", VisualEffectRemove, 0 },
|
{ "remove", VisualEffectRemove, 0 },
|
||||||
// { "scale", VisualEffectScale, 1 },
|
{ "scale", VisualEffectScale, 1 },
|
||||||
{ "setMaterials", VisualEffectSetMaterials, 1 },
|
{ "setMaterials", VisualEffectSetMaterials, 1 },
|
||||||
{ "setShaders", VisualEffectSetShaders, 2 },
|
{ "setShaders", VisualEffectSetShaders, 2 },
|
||||||
|
|
||||||
@ -356,7 +356,7 @@ static JSBool VisualEffectRemove(JSContext *context, uintN argc, jsval *vp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* // doesn't work as meshes are shared
|
// doesn't work as meshes are shared
|
||||||
static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp)
|
static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp)
|
||||||
{
|
{
|
||||||
OOJS_NATIVE_ENTER(context)
|
OOJS_NATIVE_ENTER(context)
|
||||||
@ -385,7 +385,7 @@ static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp)
|
|||||||
return YES;
|
return YES;
|
||||||
|
|
||||||
OOJS_NATIVE_EXIT
|
OOJS_NATIVE_EXIT
|
||||||
} */
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user