176 lines
4 KiB
Python
176 lines
4 KiB
Python
from .EntityTypeDesc import EntityTypeDesc
|
|
from toontown.coghq.SpecImports import *
|
|
|
|
class Entity(EntityTypeDesc):
|
|
abstract = 1
|
|
type = 'entity'
|
|
attribs = (('type', None, 'const'),
|
|
('name', '<unnamed>', 'string'),
|
|
('comment', '', 'string'),
|
|
('parentEntId', 0, 'entId'))
|
|
|
|
|
|
class LevelMgr(Entity):
|
|
type = 'levelMgr'
|
|
permanent = 1
|
|
attribs = (('name', 'LevelMgr', 'const'), ('parentEntId', 0, 'const'), ('modelFilename', '', 'const'))
|
|
|
|
|
|
class EditMgr(Entity):
|
|
type = 'editMgr'
|
|
permanent = 1
|
|
blockAttribs = ('comment',)
|
|
attribs = (('name', 'LevelMgr', 'const'),
|
|
('parentEntId', 0, 'const'),
|
|
('requestSave', None, 'const'),
|
|
('requestNewEntity', None, 'const'),
|
|
('insertEntity', None, 'const'),
|
|
('removeEntity', None, 'const'))
|
|
|
|
|
|
class AttribModifier(Entity):
|
|
type = 'attribModifier'
|
|
attribs = (('recursive', 0, 'bool'),
|
|
('typeName', '', 'string'),
|
|
('attribName', '', 'string'),
|
|
('value', '', 'string'))
|
|
|
|
|
|
class Locator(Entity):
|
|
type = 'locator'
|
|
attribs = (('searchPath', '', 'string'),)
|
|
|
|
|
|
class Nodepath(Entity):
|
|
type = 'nodepath'
|
|
attribs = (('parentEntId',
|
|
0,
|
|
'entId',
|
|
{'type': 'nodepath'}),
|
|
('pos', Point3(0, 0, 0), 'pos'),
|
|
('hpr', Vec3(0, 0, 0), 'hpr'),
|
|
('scale', 1, 'scale'))
|
|
|
|
|
|
class Zone(Nodepath):
|
|
type = 'zone'
|
|
permanent = 1
|
|
blockAttribs = ('pos', 'hpr')
|
|
attribs = (('parentEntId', 0, 'const'), ('description', '', 'string'), ('visibility', [], 'visZoneList'))
|
|
|
|
|
|
class EntrancePoint(Nodepath):
|
|
type = 'entrancePoint'
|
|
attribs = (('entranceId', -1, 'int'), ('radius',
|
|
15,
|
|
'float',
|
|
{'min': 0}), ('theta',
|
|
20,
|
|
'float',
|
|
{'min': 0}))
|
|
|
|
|
|
class LogicGate(Entity):
|
|
type = 'logicGate'
|
|
output = 'bool'
|
|
attribs = (('input1Event',
|
|
0,
|
|
'entId',
|
|
{'output': 'bool'}),
|
|
('input2Event',
|
|
0,
|
|
'entId',
|
|
{'output': 'bool'}),
|
|
('isInput1', 0, 'bool'),
|
|
('isInput2', 0, 'bool'),
|
|
('logicType',
|
|
'or',
|
|
'choice',
|
|
{'choiceSet': ['or',
|
|
'and',
|
|
'xor',
|
|
'nand',
|
|
'nor',
|
|
'xnor']}))
|
|
|
|
|
|
class CutScene(Entity):
|
|
type = 'cutScene'
|
|
output = 'bool'
|
|
attribs = (('pos', Point3(0, 0, 0), 'pos'),
|
|
('hpr', Vec3(0, 0, 0), 'hpr'),
|
|
('startStopEvent',
|
|
0,
|
|
'entId',
|
|
{'output': 'bool'}),
|
|
('effect',
|
|
'irisInOut',
|
|
'choice',
|
|
{'choiceSet': ['nothing', 'irisInOut', 'letterBox']}),
|
|
('motion',
|
|
'foo1',
|
|
'choice',
|
|
{'choiceSet': ['foo1']}),
|
|
('duration', 5.0, 'float'))
|
|
|
|
|
|
class CollisionSolid(Nodepath):
|
|
type = 'collisionSolid'
|
|
attribs = (('solidType',
|
|
'sphere',
|
|
'choice',
|
|
{'choiceSet': ['sphere', 'tube']}),
|
|
('radius', 1.0, 'float'),
|
|
('length', 0.0, 'float'),
|
|
('showSolid', 0, 'bool'))
|
|
|
|
|
|
class Model(Nodepath):
|
|
type = 'model'
|
|
attribs = (('loadType',
|
|
'loadModelCopy',
|
|
'choice',
|
|
{'choiceSet': ['loadModelCopy', 'loadModel', 'loadModelOnce']}),
|
|
('modelPath', None, 'bamfilename'),
|
|
('flattenType',
|
|
'light',
|
|
'choice',
|
|
{'choiceSet': ['none',
|
|
'light',
|
|
'medium',
|
|
'strong']}),
|
|
('collisionsOnly', 0, 'bool'),
|
|
('goonHatType',
|
|
'none',
|
|
'choice',
|
|
{'choiceSet': ['none', 'hardhat', 'security']}))
|
|
|
|
|
|
class Path(Nodepath):
|
|
type = 'path'
|
|
attribs = (('pathIndex', 0, 'int'), ('pathScale', 1.0, 'float'))
|
|
|
|
|
|
class VisibilityExtender(Entity):
|
|
type = 'visibilityExtender'
|
|
attribs = (('event',
|
|
None,
|
|
'entId',
|
|
{'output': 'bool'}), ('newZones', [], 'visZoneList'))
|
|
|
|
|
|
class AmbientSound(Nodepath):
|
|
type = 'ambientSound'
|
|
attribs = (('soundPath', '', 'bamfilename'), ('volume',
|
|
1,
|
|
'float',
|
|
{'min': 0,
|
|
'max': 1}), ('enabled', 1, 'bool'))
|
|
|
|
|
|
class PropSpinner(Entity):
|
|
type = 'propSpinner'
|
|
|
|
|
|
class EntityGroup(Entity):
|
|
type = 'entityGroup'
|