- Implement camera controls
- Option to resolve object properties when fetching from object store (names, descriptions etc). Can be more efficient - TODO: use FamilyProperties for child prims. - Refactored objectstore to reduce code duplication
This commit is contained in:
130
lib/classes/GameObject.ts
Normal file
130
lib/classes/GameObject.ts
Normal file
@@ -0,0 +1,130 @@
|
||||
import {Vector3} from './Vector3';
|
||||
import {UUID} from './UUID';
|
||||
import {Quaternion} from './Quaternion';
|
||||
import {Tree} from '../enums/Tree';
|
||||
import {SoundFlags} from '..';
|
||||
import {Vector4} from './Vector4';
|
||||
import {TextureEntry} from './TextureEntry';
|
||||
import {Color4} from './Color4';
|
||||
import {ParticleSystem} from './ParticleSystem';
|
||||
import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox';
|
||||
import {NameValue} from './NameValue';
|
||||
import {PCode} from '../enums/PCode';
|
||||
import {Utils} from './Utils';
|
||||
import * as Long from 'long';
|
||||
|
||||
export class GameObject
|
||||
{
|
||||
creatorID?: UUID;
|
||||
creationDate?: Long;
|
||||
baseMask?: number;
|
||||
ownerMask?: number;
|
||||
groupMask?: number;
|
||||
everyoneMask?: number;
|
||||
nextOwnerMask?: number;
|
||||
ownershipCost?: number;
|
||||
saleType?: number;
|
||||
salePrice?: number;
|
||||
aggregatePerms?: number;
|
||||
aggregatePermTextures?: number;
|
||||
aggregatePermTexturesOwner?: number;
|
||||
category: number;
|
||||
inventorySerial: number;
|
||||
itemID: UUID;
|
||||
folderID: UUID;
|
||||
fromTaskID: UUID;
|
||||
lastOwnerID: UUID;
|
||||
name?: string;
|
||||
description?: string;
|
||||
touchName?: string;
|
||||
sitName?: string;
|
||||
textureID?: string;
|
||||
resolvedAt?: number;
|
||||
totalChildren?: number;
|
||||
|
||||
|
||||
children?: GameObject[];
|
||||
rtreeEntry?: ITreeBoundingBox;
|
||||
ID = 0;
|
||||
FullID = UUID.random();
|
||||
ParentID = 0;
|
||||
OwnerID = UUID.zero();
|
||||
IsAttachment = false;
|
||||
NameValue: {[key: string]: NameValue} = {};
|
||||
PCode: PCode = PCode.None;
|
||||
|
||||
State?: number;
|
||||
CRC?: number;
|
||||
Material?: number;
|
||||
ClickAction?: number;
|
||||
Scale?: Vector3;
|
||||
ObjectData?: Buffer;
|
||||
UpdateFlags?: number;
|
||||
Flags?: number;
|
||||
PathCurve?: number;
|
||||
ProfileCurve?: number;
|
||||
PathBegin?: number;
|
||||
PathEnd?: number;
|
||||
PathScaleX?: number;
|
||||
PathScaleY?: number;
|
||||
PathShearX?: number;
|
||||
PathShearY?: number;
|
||||
PathTwist?: number;
|
||||
PathTwistBegin?: number;
|
||||
PathRadiusOffset?: number;
|
||||
PathTaperX?: number;
|
||||
PathTaperY?: number;
|
||||
PathRevolutions?: number;
|
||||
PathSkew?: number;
|
||||
ProfileBegin?: number;
|
||||
ProfileEnd?: number;
|
||||
ProfileHollow?: number;
|
||||
TextureEntry?: TextureEntry;
|
||||
TextureAnim?: Buffer;
|
||||
Data?: Buffer;
|
||||
Text?: string;
|
||||
TextColor?: Color4;
|
||||
MediaURL?: string;
|
||||
PSBlock?: Buffer;
|
||||
JointType?: number;
|
||||
JointPivot?: Vector3;
|
||||
JointAxisOrAnchor?: Vector3;
|
||||
Position?: Vector3;
|
||||
Rotation?: Quaternion;
|
||||
CollisionPlane?: Vector4;
|
||||
Velocity?: Vector3;
|
||||
Acceleration?: Vector3;
|
||||
AngularVelocity?: Vector3;
|
||||
TreeSpecies?: Tree;
|
||||
Sound?: UUID;
|
||||
SoundGain?: number;
|
||||
SoundFlags?: SoundFlags;
|
||||
SoundRadius?: number;
|
||||
Particles?: ParticleSystem;
|
||||
|
||||
constructor()
|
||||
{
|
||||
this.Position = Vector3.getZero();
|
||||
this.Rotation = Quaternion.getIdentity();
|
||||
this.AngularVelocity = Vector3.getZero();
|
||||
this.TreeSpecies = 0;
|
||||
this.SoundFlags = 0;
|
||||
this.SoundRadius = 1.0;
|
||||
this.SoundGain = 1.0;
|
||||
this.ParentID = 0;
|
||||
}
|
||||
|
||||
hasNameValueEntry(key: string): boolean
|
||||
{
|
||||
return this.NameValue[key] !== undefined;
|
||||
}
|
||||
|
||||
getNameValueEntry(key: string): string
|
||||
{
|
||||
if (this.NameValue[key])
|
||||
{
|
||||
return this.NameValue[key].value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user