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;
|
||||
|
||||
- (OOMesh *) meshRescaledBy:(GLfloat)scaleFactor;
|
||||
- (void) copyVertexArray;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -753,11 +753,29 @@ static NSString *NormalModeDescription(OOMeshNormalMode mode)
|
||||
- (OOMesh *)meshRescaledBy:(GLfloat)scaleFactor
|
||||
{
|
||||
OOMesh *result = [self mutableCopy];
|
||||
[result copyVertexArray];
|
||||
[result rescaleByFactor:scaleFactor];
|
||||
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
|
||||
{
|
||||
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 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 VisualEffectSetShaders(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 },
|
||||
{ "getShaders", VisualEffectGetShaders, 0 },
|
||||
{ "remove", VisualEffectRemove, 0 },
|
||||
// { "scale", VisualEffectScale, 1 },
|
||||
{ "scale", VisualEffectScale, 1 },
|
||||
{ "setMaterials", VisualEffectSetMaterials, 1 },
|
||||
{ "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)
|
||||
{
|
||||
OOJS_NATIVE_ENTER(context)
|
||||
@ -385,7 +385,7 @@ static JSBool VisualEffectScale(JSContext *context, uintN argc, jsval *vp)
|
||||
return YES;
|
||||
|
||||
OOJS_NATIVE_EXIT
|
||||
} */
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user