Files
gtav-src/tools_ng/lib/pipeline/fileformats/scenexml_attrs.rb
T
2025-09-29 00:52:08 +02:00

915 lines
35 KiB
Ruby
Executable File

#
# File:: scenexml_attrs.rb
# Description:: SceneXml Object Attributes
#
# Author:: David Muir <david.muir@rockstarnorth.com>
# Date:: 18 November 2008
#
#----------------------------------------------------------------------------
# Uses
#----------------------------------------------------------------------------
# None
#----------------------------------------------------------------------------
# Implementation
#----------------------------------------------------------------------------
module Pipeline
module FileFormats
module SceneXml
#
# == Description
# Utility class for use by the ObjectDef class (and supporting classes)
# to help maintain ObjectDef object's attributes Hash.
#
# +Note+: many of these are probably never used but they have been
# copied verbatim from our GTA3 Max plugin and categorised where that
# information is available.
#
class ObjectDef
MAX_CLASS_EDITABLE_MESH = 'editable_mesh'.downcase
MAX_CLASS_EDITABLE_POLY = 'editable_poly'.downcase
MAX_CLASS_XREF = 'xref_object'.downcase
MAX_CLASS_INTERNALREF = 'InternalRef'.downcase
MAX_SUPERCLASS_HELPER = 'Helper'.downcase
ATTR_CLASS_NONE = ''.downcase
ATTR_CLASS_BLOCK = 'Gta Block'.downcase
ATTR_CLASS_CARGEN = 'Gta CarGen'.downcase
ATTR_CLASS_COLLISION = 'Gta Collision'.downcase
ATTR_CLASS_ENTRYEXIT = 'Gta EntryExit'.downcase
ATTR_CLASS_GARAGEAREA = 'Gta GarageArea'.downcase
ATTR_CLASS_GROUP = 'Gta Group'.downcase
ATTR_CLASS_LODMODIFIER = 'Gta LodModifier'.downcase
ATTR_CLASS_MILO = 'Gta MILO'.downcase
ATTR_CLASS_MILOTRI = 'Gta MILOTri'.downcase
ATTR_CLASS_MLOPORTAL = 'Gta MloPortal'.downcase
ATTR_CLASS_MLOROOM = 'Gta MloRoom'.downcase
ATTR_CLASS_MULTIBLDG = 'Gta MultiBldg'.downcase
ATTR_CLASS_OBJ = 'Gta Object'.downcase
ATTR_CLASS_PICKUP = 'Gta Pickup'.downcase
ATTR_CLASS_SOUNDZONE = 'Gta SoundZone'.downcase
ATTR_CLASS_STUNTJUMP = 'Gta StuntJump'.downcase
ATTR_CLASS_TIMECYCLE = 'Gta TimeCycle'.downcase
ATTR_CLASS_ZONE = 'Gta Zone'.downcase
ATTR_CLASS_2DFX_AUDIO_EMITTER = 'Gta AudioEmit'.downcase
ATTR_CLASS_2DFX_LIGHT_SHAFT = 'Gta LightShaft'.downcase
ATTR_CLASS_2DFX_PROC_OBJECT = 'Gta ProcObj'.downcase
ATTR_CLASS_2DFX_WALK_DONT_WALK = 'Gta WalkDontWalk'.downcase
ATTR_CLASS_2DFX_SCRIPT = 'Gta Script'.downcase
ATTR_CLASS_2DFX_LADDER = 'GtaLadderFX'.downcase
ATTR_CLASS_2DFX_LEDGE = 'RSLedge'.downcase
ATTR_CLASS_2DFX_PED_QUEUE = 'Gta Queue'.downcase
ATTR_CLASS_2DFX_SPAWN_POINT = 'Gta SpawnPoint'.downcase
ATTR_CLASS_2DFX_SCROLLBARS = 'Gta Scrollbars'.downcase
ATTR_CLASS_2DFX_WINDOW_LEDGE = 'Gta WindowLegde'.downcase
ATTR_CLASS_2DFX_BUOYANCY = 'Gta Buoyancy'.downcase
ATTR_CLASS_2DFX_LIGHT = 'Gta Light'.downcase
ATTR_CLASS_2DFX_LIGHT_PHOTO = 'Gta LightPhoto'.downcase
ATTR_CLASS_2DFX_PARTICLE_EFFECT = 'Gta Particle'.downcase
ATTR_CLASS_2DFX_EXPLOSION_EFFECT = 'Gta Explosion'.downcase
ATTR_CLASS_2DFX_SWAYABLE_EFFECT = 'Gta Swayable'.downcase
#----------------------------------------------------------------
# Gta Object
#----------------------------------------------------------------
ATTR_STR_OBJ_LOD_DISTANCE = 'LOD distance'.downcase
ATTR_STR_OBJ_TXD = 'TXD'.downcase
ATTR_STR_OBJ_REAL_TXD = 'REALTXD'.downcase
ATTR_STR_OBJ_COLLISION_GROUP = 'Collision Group'.downcase
ATTR_STR_OBJ_IPL_GROUP = 'IPL Group'.downcase
ATTR_STR_OBJ_AREA_CODE = 'Area Code'.downcase
ATTR_STR_OBJ_DRAW_LAST = 'Draw last'.downcase
ATTR_STR_OBJ_EXPORT_VERTEX_COLOURS = 'Export Vertex Colours'.downcase
ATTR_STR_OBJ_LEVEL_DESIGN_OBJECT = 'Level Design Object'.downcase
ATTR_STR_OBJ_BREAKABLE = 'Breakable'.downcase
ATTR_STR_OBJ_DONT_COLLIDE_WITH_FLYER = 'Dont Collide With Flyer'.downcase
ATTR_STR_OBJ_DONT_ADD_TO_IPL = 'Dont Add To IPL'.downcase
ATTR_STR_OBJ_DONT_EXPORT = 'Dont Export'.downcase
ATTR_STR_OBJ_IS_DYNAMIC = 'Is Dynamic'.downcase
ATTR_STR_OBJ_IS_FIXED = 'Is Fixed'.downcase
ATTR_STR_OBJ_BACKFACE_CULL = 'Backface Cull'.downcase
ATTR_STR_OBJ_LOW_PRIORITY = 'Low Priority'.downcase
ATTR_STR_OBJ_USE_FULL_MATRIX = 'Use Full Matrix'.downcase
ATTR_STR_OBJ_NON_STREAMED_INST = 'Non Streamed Instance'.downcase
ATTR_STR_OBJ_IS_UNDERWATER = 'Is Underwater'.downcase
ATTR_STR_OBJ_IS_TUNNEL = 'Is Tunnel'.downcase
ATTR_STR_OBJ_IS_TUNNEL_TRANSITION = 'Is Tunnel Transition'.downcase
ATTR_STR_OBJ_DOES_NOT_PROVIDE_AI_COVER = 'Does Not Provide AI Cover'.downcase
ATTR_STR_OBJ_BREAK_USE_PIVOT = 'Break Use Pivot'.downcase
ATTR_STR_OBJ_MILO_PREVIEW = 'Milo Preview'.downcase
ATTR_STR_OBJ_IS_FRAGMENT = 'Is Fragment'.downcase
ATTR_STR_OBJ_IS_FRAGMENT_PROXY = 'Is FragProxy'.downcase
ATTR_STR_OBJ_INSTANCE = 'Instanced'.downcase
ATTR_STR_OBJ_DONT_CAST_SHADOWS = 'Dont cast shadows'.downcase
ATTR_STR_OBJ_CAST_TEXTURE_SHADOWS = 'Cast texture shadows'.downcase
ATTR_STR_OBJ_BLOCK_ID = 'BlockID'.downcase
ATTR_STR_OBJ_ATTRIBUTE = 'Attribute'.downcase
ATTR_STR_OBJ_IS_LADDER = 'Is Ladder'.downcase
ATTR_STR_OBJ_HAS_DOOR_PHYSICS = 'Has Door Physics'.downcase
ATTR_STR_OBJ_PACK_TEXTURES = 'Pack Textures'.downcase
ATTR_STR_OBJ_DOES_NOT_TOUCH_WATER = 'Does Not Touch Water'.downcase
ATTR_STR_OBJ_IS_FIXED_FOR_NAVIGATION = 'Is Fixed For Navigation'.downcase
ATTR_STR_OBJ_ANIM = 'Anim'.downcase
ATTR_STR_OBJ_HAS_ANIM = 'Has Anim'.downcase
ATTR_STR_OBJ_HAS_UV_ANIM = 'Has UvAnim'.downcase
ATTR_STR_OBJ_DONT_AVOID_BY_PEDS = 'Don\'t Avoid By Peds'.downcase
ATTR_STR_OBJ_NEW_FRAG = 'New Frag'.downcase
ATTR_STR_OBJ_HOLD_FOR_LOD = 'Hold for LOD'.downcase
ATTR_STR_OBJ_INSTANCE_LOD_DISTANCE = 'Instance LOD distance'.downcase
ATTR_STR_OBJ_HAND_EDITED_COLLISION = 'Hand edited collision'.downcase
ATTR_STR_OBJ_ENABLE_AMBIENT_MULTIPLIER = 'Enable Ambient Multiplier'.downcase
ATTR_STR_OBJ_ALWAYS_LOADED = 'Always Loaded'.downcase
ATTR_STR_OBJ_EDITED_BY_LEEDS = 'Edited by Leeds'.downcase
ATTR_STR_OBJ_SHADOW_ONLY = 'Shadow Only'.downcase
ATTR_STR_OBJ_DISABLE_PED_SPAWNING = 'Disable Ped Spawning'.downcase
ATTR_STR_OBJ_STATIC_SHADOWS = 'Static Shadows'.downcase
ATTR_STR_OBJ_DYNAMIC_SHADOWS = 'Dynamic Shadows'.downcase
ATTR_STR_OBJ_ON_ALL_DAY = 'On all day'.downcase
ATTR_STR_OBJ_SUPERLOD_WITH_ALPHA = 'Superlod with Alpha'.downcase
ATTR_STR_OBJ_TOUGH_FOR_BULLETS = 'Tough for Bullets'.downcase
ATTR_STR_OBJ_INSTANCE_COLLISION = 'Instance Collision'.downcase
ATTR_STR_OBJ_AUTHORED_ORIENTS = 'Authored Orients'.downcase
ATTR_STR_OBJ_DONT_ADD_TO_IDE = 'Dont Add To IDE'.downcase
ATTR_STR_OBJ_REVERSE_COVER_FOR_PLAYER = 'Reverse Cover For Player'.downcase
ATTR_STR_OBJ_DAY_NIGHT_AMBIENT = 'Day/Night Ambient'.downcase
ATTR_STR_OBJ_PRIORITY = 'Priority'.downcase
ATTR_STR_OBJ_EXPORT_GEOMETRY = 'Export Geometry'.downcase
ATTR_STR_OBJ_ALLOW_ANY_LOD_DISTANCE = 'Allow Any Lod Distance'.downcase
ATTR_STR_OBJ_MODEL_GROUP = 'Model Group'.downcase
# Likely obsolete -- DHM 18 November 2008 (required for IDE)
ATTR_STR_OBJ_LIGHT_REFLECTION = 'Light reflection'.downcase
ATTR_STR_OBJ_DO_NOT_FADE = 'Do not fade'.downcase
ATTR_STR_OBJ_NO_ZBUFFER_WRITE = 'No Zbuffer write'.downcase
ATTR_STR_OBJ_IS_FIRE_ESCAPE = 'Is Fire Escape'.downcase
#----------------------------------------------------------------
# Gta Object : Time
#----------------------------------------------------------------
ATTR_STR_OBJ_IS_TIME_OBJECT = 'Is time object'.downcase
ATTR_STR_TOBJ_ALLOW_VANISH_WHILST_VIEWED = 'Allow Vanish Whilst Viewed'.downcase
ATTR_STR_TOBJ_TIME_1 = '1'.downcase
ATTR_STR_TOBJ_TIME_2 = '2'.downcase
ATTR_STR_TOBJ_TIME_3 = '3'.downcase
ATTR_STR_TOBJ_TIME_4 = '4'.downcase
ATTR_STR_TOBJ_TIME_5 = '5'.downcase
ATTR_STR_TOBJ_TIME_6 = '6'.downcase
ATTR_STR_TOBJ_TIME_7 = '7'.downcase
ATTR_STR_TOBJ_TIME_8 = '8'.downcase
ATTR_STR_TOBJ_TIME_9 = '9'.downcase
ATTR_STR_TOBJ_TIME_10 = '10'.downcase
ATTR_STR_TOBJ_TIME_11 = '11'.downcase
ATTR_STR_TOBJ_TIME_12 = '12'.downcase
ATTR_STR_TOBJ_TIME_13 = '13'.downcase
ATTR_STR_TOBJ_TIME_14 = '14'.downcase
ATTR_STR_TOBJ_TIME_15 = '15'.downcase
ATTR_STR_TOBJ_TIME_16 = '16'.downcase
ATTR_STR_TOBJ_TIME_17 = '17'.downcase
ATTR_STR_TOBJ_TIME_18 = '18'.downcase
ATTR_STR_TOBJ_TIME_19 = '19'.downcase
ATTR_STR_TOBJ_TIME_20 = '20'.downcase
ATTR_STR_TOBJ_TIME_21 = '21'.downcase
ATTR_STR_TOBJ_TIME_22 = '22'.downcase
ATTR_STR_TOBJ_TIME_23 = '23'.downcase
ATTR_STR_TOBJ_TIME_24 = '24'.downcase
#--------------------------------------------------------------------------
# Gta Collision
#--------------------------------------------------------------------------
ATTR_STR_COLLISION_AUDIO_MATERIAL = 'Audio Material'.downcase
#--------------------------------------------------------------------------
# Gta Block
#--------------------------------------------------------------------------
ATTR_STR_BLOCK_BLOCK_ID = 'BlockID'.downcase
ATTR_STR_BLOCK_ARTIST = 'Artist'.downcase
ATTR_STR_BLOCK_DATE_EDITED = 'Date Edited'.downcase
ATTR_STR_BLOCK_IN_PROGRESS = 'In Progress'.downcase
ATTR_STR_BLOCK_FIRST_PASS = 'First Pass'.downcase
ATTR_STR_BLOCK_SECOND_PASS = 'Second Pass'.downcase
ATTR_STR_BLOCK_POLISHED = 'Polished'.downcase
ATTR_STR_BLOCK_OPTIMISED = 'Optimised'.downcase
ATTR_STR_BLOCK_STREAMING_WELL = 'Streaming Well'.downcase
ATTR_STR_BLOCK_COMPLETE = 'Complete'.downcase
ATTR_STR_BLOCK_MEMMODEL = 'MemModel'.downcase
ATTR_STR_BLOCK_MEMCOLLISION = 'MemCollision'.downcase
ATTR_STR_BLOCK_MEMTEXTURE = 'MemTexture'.downcase
ATTR_STR_BLOCK_NUMMODELS = 'NumModels'.downcase
ATTR_STR_BLOCK_NUMXREFS = 'NumXRefs'.downcase
ATTR_STR_BLOCK_FREEZE = 'Freeze'.downcase
#--------------------------------------------------------------------------
# Gta Milo
#--------------------------------------------------------------------------
ATTR_STR_MILO_IS_MLO_LOD = 'Is MLO LOD'.downcase
ATTR_STR_MILO_DONT_EXPORT_MILO = 'Don\'t Export Milo'.downcase
ATTR_STR_MILO_PROPOGATE_INSTANCING = 'Propogate Instancing'.downcase
ATTR_STR_MILO_OFFICE_POPULATION = 'Office Population'.downcase
ATTR_STR_MILO_ALLOW_SPRINTING = 'Allow Sprinting'.downcase
ATTR_STR_MILO_CUTSCENE_ONLY = 'Cutscene Only'.downcase
ATTR_STR_MILO_LOD_WHEN_LOCKED = 'LOD When Locked'.downcase
ATTR_STR_MILO_NO_WATER_REFLECTION = 'No Water Reflection'.downcase
ATTR_STR_MILO_DONT_DRAW_IF_LOCKED = 'Dont Draw If Locked'.downcase
ATTR_STR_MILO_DETAIL = 'Detail'.downcase
ATTR_STR_MILO_PRIORITISE_DECALS = 'Prioritise Decals/Alphas'.downcase
#--------------------------------------------------------------------------
# Gta MiloTri
#--------------------------------------------------------------------------
ATTR_STR_MILOTRI_DONT_EXPORT_MILO_TRI = 'Don\'t Export Milo Tri'.downcase
#--------------------------------------------------------------------------
# Gta MloRoom
#--------------------------------------------------------------------------
ATTR_STR_MLOROOM_TIMECYCLE = 'Timecycle'.downcase
ATTR_STR_MLOROOM_BLEND = 'Blend'.downcase
ATTR_STR_MLOROOM_FREEZE_PEDS = 'Freeze Peds'.downcase
ATTR_STR_MLOROOM_FREEZE_CARS = 'Freeze Cars'.downcase
ATTR_STR_MLOROOM_REDUCE_PEDS = 'Reduce Peds'.downcase
ATTR_STR_MLOROOM_REDUCE_CARS = 'Reduce Cars'.downcase
ATTR_STR_MLOROOM_NO_DIRECTIONAL_LIGHT = 'No Directional Light'.downcase
ATTR_STR_MLOROOM_NO_EXTERIOR_LIGHT = 'No Exterior Light'.downcase
ATTR_STR_MLOROOM_FORCE_FREEZE = 'Force Freeze'.downcase
#--------------------------------------------------------------------------
# Gta MloPortal
#--------------------------------------------------------------------------
ATTR_STR_MLOPORTAL_FADE_DISTANCE = 'Fade Distance'.downcase
ATTR_STR_MLOPORTAL_RED = 'Red'.downcase
ATTR_STR_MLOPORTAL_GREEN = 'Green'.downcase
ATTR_STR_MLOPORTAL_BLUE = 'Blue'.downcase
ATTR_STR_MLOPORTAL_ONE_WAY = 'One Way'.downcase
ATTR_STR_MLOPORTAL_MLO_LINK = 'MLO Link'.downcase
ATTR_STR_MLOPORTAL_MIRROR = 'Mirror'.downcase
ATTR_STR_IGNORE_BY_MODIFIER = 'Ignored by Modifier'.downcase
ATTR_STR_MLOPORTAL_EXPENSIVE_SHADERS = 'Expensive Shaders'.downcase
ATTR_STR_MLOPORTAL_DRAW_LOW_LOD_ONLY = 'Draw Low LOD Only'.downcase
ATTR_STR_MLOPORTAL_ALLOW_CLOSING = 'Allow Closing'.downcase
PROP_STR_MLOPORTAL_ATTACHED_OBJECTS = 'PortalObjects'.downcase
PROP_STR_MLOPORTAL_FIRST_ROOM = 'LinkFirst'.downcase
PROP_STR_MLOPORTAL_SECOND_ROOM = 'LinkSecond'.downcase
PROP_STR_MLOPORTAL_LENGTH = '0'.downcase
PROP_STR_MLOPORTAL_WIDTH = '1'.downcase
PROP_STR_MLOPORTAL_GRID = '2'.downcase
#--------------------------------------------------------------------------
# Cargen
#--------------------------------------------------------------------------
ATTR_STR_MODEL = 'Model'.downcase
ATTR_STR_COLOUR1 = 'Colour1'.downcase
ATTR_STR_COLOUR2 = 'Colour2'.downcase
ATTR_STR_COLOUR3 = 'Colour3'.downcase
ATTR_STR_COLOUR4 = 'Colour4'.downcase
ATTR_STR_HIGH_PRIORITY = 'High Priority'.downcase
ATTR_STR_ALARM_CHANCE = 'Alarm Chance'.downcase
ATTR_STR_LOCKED_CHANCE = 'Locked Chance'.downcase
ATTR_STR_MIN_DELAY = 'Min Delay'.downcase
ATTR_STR_MAX_DELAY = 'Max Delay'.downcase
ATTR_STR_POLICE = 'Police'.downcase
ATTR_STR_FIRETRUCK = 'Firetruck'.downcase
ATTR_STR_AMBULANCE = 'Ambulance'.downcase
ATTR_STR_ALIGN_LEFT = 'Align Left'.downcase
ATTR_STR_ALIGN_RIGHT = 'Align Right'.downcase
ATTR_STR_SINGLE_PLAYER = 'Single Player'.downcase
ATTR_STR_NETWORK = 'Network'.downcase
ATTR_STR_CREATION_RULE = 'Creation Rule'.downcase
ATTR_STR_SCENARIO = 'Scenario'.downcase
#--------------------------------------------------------------------------
# Vehicle Node
#--------------------------------------------------------------------------
ATTR_STR_VEHNOD_DISABLED = 'Disabled'.downcase
ATTR_STR_VEHNOD_WATER = 'Water'.downcase
ATTR_STR_VEHNOD_LOW_BRIDGE = 'LowBridge'.downcase
ATTR_STR_VEHNOD_SPEED = 'Speed'.downcase
ATTR_STR_VEHNOD_SPECIAL = 'Special'.downcase
ATTR_STR_VEHNOD_DENSITY = 'Density'.downcase
ATTR_STR_VEHNOD_STREETNAME = 'Streetname'.downcase
ATTR_STR_VEHNOD_HIGHWAY = 'Highway'.downcase
ATTR_STR_VEHNOD_NO_GPS = 'NoGps'.downcase
ATTR_STR_VEHNOD_TUNNEL = 'Tunnel'.downcase
ATTR_STR_VEHNOD_OPENSPACE = 'OpenSpace'.downcase
#--------------------------------------------------------------------------
# Vehicle Link
#--------------------------------------------------------------------------
ATTR_STR_VEHLNK_LANES_IN = 'Lanes In'.downcase
ATTR_STR_VEHLNK_LANES_OUT = 'Lanes Out'.downcase
ATTR_STR_VEHLNK_WIDTH = 'Width'.downcase
ATTR_STR_VEHLNK_NARROW_ROAD = 'Narrowroad'.downcase
ATTR_STR_VEHLNK_GPS_BOTH_WAYS = 'GpsBothWays'.downcase
#--------------------------------------------------------------------------
# Patrol Node
#--------------------------------------------------------------------------
ATTR_STR_PATNOD_DURATION = 'Patrol Duration'.downcase
ATTR_STR_PATNOD_HEADING_X = 'Heading X'.downcase
ATTR_STR_PATNOD_HEADING_Y = 'Heading Y'.downcase
ATTR_STR_PATNOD_HEADING_Z = 'Heading Z'.downcase
ATTR_STR_PATNOD_ASSOCIATED_BASE = 'Associated Base'.downcase
ATTR_STR_PATNOD_ROUTE_NAME = 'Route Name'.downcase
ATTR_STR_PATNOD_PATROL_TYPE = 'Patrol Type'.downcase
#--------------------------------------------------------------------------
# Patrol Link
#--------------------------------------------------------------------------
# Currently empty.
#--------------------------------------------------------------------------
# Gta Particle / Gta Explosion
#--------------------------------------------------------------------------
ATTR_STR_2DFX_PARTICLE_NAME = 'Name'.downcase
ATTR_STR_2DFX_PARTICLE_TRIGGER = 'Trigger'.downcase
ATTR_STR_2DFX_PARTICLE_ATTACH = 'Attach'.downcase
ATTR_STR_2DFX_PARTICLE_ATTACH_TO_ALL = 'Attach to All'.downcase
ATTR_STR_2DFX_PARTICLE_SCALE = 'Scale'.downcase
ATTR_STR_2DFX_PARTICLE_PROBABILITY = 'Probability'.downcase
ATTR_STR_2DFX_PARTICLE_COLOUR_R = 'R'.downcase
ATTR_STR_2DFX_PARTICLE_COLOUR_G = 'G'.downcase
ATTR_STR_2DFX_PARTICLE_COLOUR_B = 'B'.downcase
ATTR_STR_2DFX_EXPLOSION_NAME = 'Explosion Tag'.downcase
# Flags
ATTR_STR_2DFX_PARTICLE_IGNORE_DAMAGE_MODEL = 'Ignore Damage Model'.downcase
ATTR_STR_2DFX_PARTICLE_PLAY_ON_PARENT = 'Play On Parent'.downcase
ATTR_STR_2DFX_PARTICLE_HAS_TINT = 'Has Tint'.downcase
#--------------------------------------------------------------------------
# Gta Light and Gta LightPhoto
#--------------------------------------------------------------------------
ATTR_STR_2DFX_LIGHT_SIZE = 'Light size'.downcase
ATTR_STR_2DFX_LIGHT_CORONA_SIZE = 'Corona size'.downcase
ATTR_STR_2DFX_LIGHT_FLASHINESS = 'Flashiness'.downcase
ATTR_STR_2DFX_LIGHT_CORONA_NAME = 'Corona name'.downcase
ATTR_STR_2DFX_LIGHT_ENABLED = 'Enabled'.downcase
ATTR_STR_2DFX_LIGHT_ATTACH = 'Attach'.downcase
ATTR_STR_2DFX_LIGHT_VOLUME_SIZE = 'Volume Size'.downcase
ATTR_STR_2DFX_LIGHT_VOLUME_INTENSITY = 'Volume Intensity'.downcase
ATTR_STR_2DFX_LIGHT_LIGHT_FADE_DISTANCE = 'Light Fade Distance'.downcase
ATTR_STR_2DFX_LIGHT_VOLUME_FADE_DISTANCE = 'Volume Fade Distance'.downcase
ATTR_STR_2DFX_LIGHT_CORONA_HDR_MULTIPLIER = 'Corona HDR multiplier'.downcase
ATTR_STR_2DFX_LIGHT_SHADOW_ALPHA = 'Shadow Alpha'.downcase
PROP_STR_2DFX_LIGHT_COLOUR = 'Colour'.downcase
PROP_STR_2DFX_LIGHT_INTENSITY = 'Intensity'.downcase
PROP_STR_2DFX_LIGHT_ATTENUATION_START = 'Attenuation Start'.downcase
PROP_STR_2DFX_LIGHT_ATTENUATION_END = 'Attenuation End'.downcase
PROP_STR_2DFX_LIGHT_IS_SPOT = 'Is Spot'.downcase
PROP_STR_2DFX_LIGHT_HOTSPOT = 'Hotspot'.downcase
PROP_STR_2DFX_LIGHT_FALLSIZE = 'Fallsize'.downcase
PROP_STR_2DFX_LIGHT_SHADOW_MAP = 'Shadowmap'.downcase
# Flags
ATTR_STR_2DFX_LIGHT_FADE_BETWEEN_DAY_AND_NIGHT = 'Fade Between Day and Night'.downcase
ATTR_STR_2DFX_LIGHT_DAY = 'Day'.downcase
ATTR_STR_2DFX_LIGHT_NIGHT = 'Night'.downcase
ATTR_STR_2DFX_LIGHT_IS_ELECTRIC = 'Is Electric'.downcase
ATTR_STR_2DFX_LIGHT_ONLY_FROM_BELOW = 'Only From Below'.downcase
ATTR_STR_2DFX_LIGHT_STROBE = 'Strobe'.downcase
ATTR_STR_2DFX_LIGHT_PLANE = 'Plane'.downcase
ATTR_STR_2DFX_LIGHT_CAST_STATIC_SHADOWS = 'Cast Static Object Shadow'.downcase
ATTR_STR_2DFX_LIGHT_CAST_DYNAMIC_SHADOWS = 'Cast Dynamic Object Shadow'.downcase
ATTR_STR_2DFX_LIGHT_CALC_FROM_SUNLIGHT = 'Calc From Sunlight'.downcase
ATTR_STR_2DFX_LIGHT_ENABLE_BUZZING = 'Enable Buzzing'.downcase
ATTR_STR_2DFX_LIGHT_FORCE_BUZZING = 'Force Buzzing'.downcase
ATTR_STR_2DFX_LIGHT_VOLUME_DRAWING = 'Volume Drawing'.downcase
ATTR_STR_2DFX_LIGHT_NO_SPECULAR = 'No Specular'.downcase
ATTR_STR_2DFX_LIGHT_INVERT_CLAMP = 'Invert Clamp'.downcase
#--------------------------------------------------------------------------
# Gta Swayable
#--------------------------------------------------------------------------
ATTR_STR_2DFX_SWAYABLE_BONEID = 'Attach'.downcase
ATTR_STR_2DFX_SWAYABLE_LOW_WIND_SPEED = 'Low Wind Sway Speed'.downcase
ATTR_STR_2DFX_SWAYABLE_LOW_WIND_AMPLITUDE = 'Low Wind Sway Amplitude'.downcase
ATTR_STR_2DFX_SWAYABLE_HIGH_WIND_SPEED = 'High Wind Sway Speed'.downcase
ATTR_STR_2DFX_SWAYABLE_HIGH_WIND_AMPLITUDE = 'High Wind Sway Amplitude'.downcase
#--------------------------------------------------------------------------
# Gta Scrollbars
#--------------------------------------------------------------------------
PARAM_STR_2DFX_SCROLLBARS_TYPE = 'Type'.downcase
PARAM_STR_2DFX_SCROLLBARS_HEIGHT = 'Height'.downcase
PARAM_STR_2DFX_SCROLLBARS_NUMPOINTS = 'NumPoints'.downcase
#--------------------------------------------------------------------------
# Gta Ladders
#--------------------------------------------------------------------------
ATTR_STR_2DFX_LADDER_CAN_GET_OFF_AT_TOP = 'Can Get Off At Top'.downcase
#--------------------------------------------------------------------------
# Gta TimeCycle
#--------------------------------------------------------------------------
ATTR_STR_TCYC_PERCENTAGE = 'Percentage'.downcase
ATTR_STR_TCYC_START_HOUR = 'StartHour'.downcase
ATTR_STR_TCYC_END_HOUR = 'EndHour'.downcase
ATTR_STR_TCYC_IDSTRING = 'IDString'.downcase
ATTR_STR_TCYC_RANGE = 'Range'.downcase
ATTR_DEFAULT_TCYC_PERCENTAGE = 0.0
ATTR_DEFAULT_TCYC_START_HOUR = 0
ATTR_DEFAULT_TCYC_END_HOUR = 23
ATTR_DEFAULT_TCYC_IDSTRING = ''
ATTR_DEFAULT_TCYC_RANGE = 100.0
#--------------------------------------------------------------------------
# UNCATEGORISED
#--------------------------------------------------------------------------
ATTR_STR_CULL_WATER = 'Cull Water'.downcase
ATTR_STR_ADDITIVE = 'Additive'.downcase
ATTR_STR_IS_SUBWAY = 'Is Subway'.downcase
ATTR_STR_IGNORE_LIGHTING = 'Ignore Lighting'.downcase
ATTR_STR_TIME_ON = 'Time on'.downcase
ATTR_STR_TIME_OFF = 'Time off'.downcase
ATTR_STR_NO_SHADOWS = 'No Shadows'.downcase
ATTR_STR_SMASHABLE = 'Smashable'.downcase
ATTR_STR_DENSITY = 'Density'.downcase
ATTR_STR_LENGTH = 'Length'.downcase
ATTR_STR_INTENSITY = 'Intensity'.downcase
ATTR_STR_DISTANCE_ON = 'Distance on'.downcase
ATTR_STR_DISTANCE_OFF = 'Distance off'.downcase
ATTR_STR_TYPE = 'Type'.downcase
ATTR_STR_START_TIME = 'Start Time'.downcase
ATTR_STR_END_TIME = 'End Time'.downcase
ATTR_STR_EFFECT = 'Effect'.downcase
ATTR_STR_SPEED = 'Speed'.downcase
ATTR_STR_SIZE = 'Size'.downcase
ATTR_STR_INTEREST = 'Interest'.downcase
ATTR_STR_LOOK_AT = 'Look At'.downcase
ATTR_STR_DIRECTION = 'Direction'.downcase
ATTR_STR_IS_GARAGE_DOOR = 'Is Garage Door'.downcase
ATTR_STR_GROUP = 'Group'.downcase
ATTR_STR_SEED = 'Seed'.downcase
ATTR_STR_STATUS = 'Status'.downcase
ATTR_STR_LOD_PARENT = 'LOD Parent'.downcase
ATTR_STR_IS_TREE = 'Is Tree'.downcase
ATTR_STR_EXPLODES_WHEN_SHOT = 'Explodes When Shot'.downcase
ATTR_STR_ENCLOSED = 'Enclosed'.downcase
ATTR_STR_STAIRS = 'Stairs'.downcase
ATTR_STR_1ST_PERSON = '1st Person'.downcase
ATTR_STR_STOP_RAINING = 'Stop Raining'.downcase
ATTR_STR_NO_POLICE = 'No Police'.downcase
ATTR_STR_IGNORE = 'Ignore'.downcase
ATTR_STR_LOAD_COLLISION = 'Load Collision'.downcase
ATTR_STR_CAN_SEE_SUBWAY = 'Can see subway'.downcase
ATTR_STR_POLICE_WALK = 'Police walk'.downcase
ATTR_STR_IN_ROOM_AUDIO = 'In room audio'.downcase
ATTR_STR_FEWER_PEDS = 'Fewer Peds'.downcase
ATTR_STR_WANTED_DROP_AMOUNT = 'Wanted Drop Amount'.downcase
ATTR_STR_PICKUP_TYPE = 'Pickup Type'.downcase
ATTR_STR_ROTATE = 'Rotate'.downcase
ATTR_STR_RUBBISH = 'Rubbish'.downcase
ATTR_STR_TITLE = 'Title'.downcase
ATTR_STR_INVERT_ROTATION = 'InvertRotation'.downcase
ATTR_STR_LEAVE_CAMERA = 'LeaveCamera'.downcase
ATTR_STR_EXTRA_COLOUR = 'Extra Colour'.downcase
ATTR_STR_IS_DOOR = 'Is Door'.downcase
ATTR_STR_IS_CRANE = 'Is Crane'.downcase
ATTR_STR_SHOP_ENTRANCE = 'Shop Entrance'.downcase
ATTR_STR_FADE = 'Fade'.downcase
ATTR_STR_LINKED = 'Linked'.downcase
ATTR_STR_SHOP_EXIT = 'Shop Exit'.downcase
ATTR_STR_LINE1 = 'Linel'.downcase
ATTR_STR_LINE2 = 'Line2'.downcase
ATTR_STR_LINE3 = 'Line3'.downcase
ATTR_STR_LINE4 = 'Line4'.downcase
ATTR_STR_WARP_CARS = 'Warp Cars'.downcase
ATTR_STR_WARP_BIKES = 'Warp Bikes'.downcase
ATTR_STR_NUM_LINES = 'Num Lines'.downcase
ATTR_STR_NUM_LETTERS = 'Num Letters'.downcase
ATTR_STR_DAY_BRIGHTNESS = 'Day Brightness'.downcase
ATTR_STR_NIGHT_BRIGHTNESS = 'Night Brightness'.downcase
ATTR_STR_DRAW_IN_WET_ONLY = 'Draw In Wet Only'.downcase
ATTR_STR_INDEX = 'Index'.downcase
ATTR_STR_USAGE = 'Usage'.downcase
ATTR_STR_SCORE = 'Score'.downcase
ATTR_STR_RULE = 'Rule'.downcase
ATTR_STR_OBJECT = 'Object'.downcase
ATTR_STR_SPACING = 'Spacing'.downcase
ATTR_STR_MIN_SCALE = 'MinScale'.downcase
ATTR_STR_MAX_SCALE = 'MaxScale'.downcase
ATTR_STR_MIN_SCALE_Z = 'MinScaleZ'.downcase
ATTR_STR_MAX_SCALE_Z = 'MaxScaleZ'.downcase
ATTR_STR_MIN_Z_OFFSET = 'ZOffsetMin'.downcase
ATTR_STR_MAX_Z_OFFSET = 'ZOffsetMax'.downcase
ATTR_STR_IS_ALIGNED = 'IsAligned'.downcase
ATTR_STR_GOING_UP = 'Going Up'.downcase
ATTR_STR_IS_TAG = 'Is Tag'.downcase
ATTR_STR_OPEN_TIME = 'Open Time'.downcase
ATTR_STR_CLOSE_TIME = 'Close Time'.downcase
ATTR_STR_WARP_GANG = 'Warp Gang'.downcase
ATTR_STR_DO_NOT_WARP = 'Do not warp'.downcase
ATTR_STR_SCRIPT = 'Script'.downcase
ATTR_STR_VISIBLE = 'Visible'.downcase
ATTR_STR_SCREENS_1 = 'Screens 1'.downcase
ATTR_STR_SCREENS_2 = 'Screens 2'.downcase
ATTR_STR_SCREENS_3 = 'Screens 3'.downcase
ATTR_STR_SCREENS_4 = 'Screens 4'.downcase
ATTR_STR_SCREENS_5 = 'Screens 5'.downcase
ATTR_STR_SCREENS_6 = 'Screens 6'.downcase
ATTR_STR_NUM_RANDOM_PEDS = 'Num Random Peds'.downcase
ATTR_STR_SOUND = 'Sound'.downcase
ATTR_STR_ACTIVE = 'Active'.downcase
ATTR_STR_RANDOM_OPEN_TIME = 'Random Open Time'.downcase
ATTR_STR_PALETTE_ID = 'Palette ID'.downcase
ATTR_STR_BURGLARY_HOUSE = 'Burglary House'.downcase
ATTR_STR_TUNNEL_TRANSITION = 'Tunnel Transition'.downcase
ATTR_STR_TUNNEL = 'Tunnel'.downcase
ATTR_STR_MILITARY_AREA = 'Military Area'.downcase
ATTR_STR_HAS_TUNNEL_COLOURS = 'Has Tunnel Colours'.downcase
ATTR_STR_EXTRA_AIR_RESISTANCE = 'Extra Air Resistance'.downcase
ATTR_STR_FEWER_CARS = 'Fewer Cars'.downcase
ATTR_STR_IS_TRAFFIC_LIGHT = 'Is Traffic Light'.downcase
ATTR_STR_IGNORE_POPULATION_LIMIT = 'Ignore Population Limit'.downcase
ATTR_STR_ACTIVE_DURING_DAY = 'Active During Day'.downcase
ATTR_STR_ACTIVE_DURING_NIGHT = 'Active During Night'.downcase
ATTR_STR_PED_TYPE = 'ped type'.downcase
ATTR_STR_START_TIME_OVERRIDE = 'time start override'.downcase
ATTR_STR_END_TIME_OVERRIDE = 'time end override'.downcase
ATTR_STR_WORK_TYPE = 'Work Type'.downcase
ATTR_STR_HOME = 'Home'.downcase
ATTR_STR_LEISURE_TYPE = 'Leisure Type'.downcase
ATTR_STR_FOOD_TYPE = 'Food Type'.downcase
#--------------------------------------------------------------------
# Attribute/Property/Class Test Functions
#--------------------------------------------------------------------
def has_no_attr_class?( )
is_attribute_class?( ATTR_CLASS_NONE )
end
def has_parent?( )
( not @parent.nil? )
end
def has_name?( )
( @name.is_a?( String ) and ( @name.size > 0 ) )
end
def export?( )
return ( not get_attr( ATTR_STR_OBJ_DONT_EXPORT, false ) )
end
def milo_export?( )
return ( is_milo? and not get_attr( ATTR_STR_MILO_DONT_EXPORT_MILO, false ) )
end
#--------------------------------------------------------------------
# Max Classes
#--------------------------------------------------------------------
def is_editable_mesh?( )
is_max_class?( MAX_CLASS_EDITABLE_MESH )
end
def is_editable_poly?( )
is_max_class?( MAX_CLASS_EDITABLE_POLY )
end
def is_helper?( )
is_max_superclass?( MAX_SUPERCLASS_HELPER )
end
def is_internalref?( )
is_max_class?( MAX_CLASS_INTERNALREF )
end
def is_xref?( )
is_max_class?( MAX_CLASS_XREF )
end
#--------------------------------------------------------------------
# Gta Attribute Classes
#--------------------------------------------------------------------
def is_block?( )
is_attribute_class?( ATTR_CLASS_BLOCK )
end
def is_cargen?( )
is_attribute_class?( ATTR_CLASS_CARGEN )
end
def is_collision?( )
is_attribute_class?( ATTR_CLASS_COLLISION )
end
def is_entryexit?( )
is_attribute_class?( ATTR_CLASS_ENTRYEXIT )
end
def is_garagearea?( )
is_attribute_class?( ATTR_CLASS_GARAGEAREA )
end
def is_group?( )
is_attribute_class?( ATTR_CLASS_GROUP )
end
def is_lodmodifier?( )
is_attribute_class?( ATTR_CLASS_LODMODIFIER )
end
def is_milo?( )
is_attribute_class?( ATTR_CLASS_MILO )
end
def is_milotri?( )
is_attribute_class?( ATTR_CLASS_MILOTRI )
end
def is_mloportal?( )
is_attribute_class?( ATTR_CLASS_MLOPORTAL )
end
def is_mloroom?( )
is_attribute_class?( ATTR_CLASS_MLOROOM )
end
def is_multibldg?( )
is_attribute_class?( ATTR_CLASS_MULTIBLDG )
end
def is_object?( )
is_attribute_class?( ATTR_CLASS_OBJ )
end
def is_pickup?( )
is_attribute_class?( ATTR_CLASS_PICKUP )
end
def is_particle?( )
is_attribute_class?( ATTR_CLASS_GTAPARTICLE )
end
def is_soundzone?( )
is_attribute_class?( ATTR_CLASS_SOUNDZONE )
end
def is_stuntjump?( )
is_attribute_class?( ATTR_CLASS_STUNTJUMP )
end
def is_timecycle?( )
is_attribute_class?( ATTR_CLASS_TIMECYCLE )
end
def is_zone?( )
is_attribute_class?( ATTR_CLASS_ZONE )
end
#--------------------------------------------------------------------
# Attribute Value Classes
#--------------------------------------------------------------------
def is_time_object?( )
return @attributes[ATTR_STR_OBJ_IS_TIME_OBJECT].value \
if ( @attributes.has_key?( ATTR_STR_OBJ_IS_TIME_OBJECT ) )
return false
end
def is_anim_object?( )
return ( 0 != ''.casecmp( @attributes[ATTR_STR_OBJ_ANIM].value ) ) \
if ( @attributes.has_key?( ATTR_STR_OBJ_ANIM ) )
return false
end
def is_fragment?( )
return ( @attributes[ATTR_STR_OBJ_IS_FRAGMENT].value ) \
if ( @attributes.has_key?( ATTR_STR_OBJ_IS_FRAGMENT ) )
return false
end
def is_fragment_proxy?( )
return ( @attributes[ATTR_STR_OBJ_IS_FRAGMENT_PROXY].value ) \
if ( @attributes.has_key?( ATTR_STR_OBJ_IS_FRAGMENT_PROXY ) )
return false
end
def has_audio_material?( )
return ( 0 != ''.casecmp( @attributes[ATTR_STR_COLLISION_AUDIO_MATERIAL].value ) ) \
if ( @attributes.has_key?( ATTR_STR_COLLISION_AUDIO_MATERIAL ) )
return false
end
#--------------------------------------------------------------------
# 2dfx Object Test Functions
#--------------------------------------------------------------------
def is_2dfx?( )
regexp_2dfx = /^is_2dfx_/
# Do some Ruby magic to invoke each 'is_2dfx_*?' method returning
# true if any return true, false otherwise. This will ensure
# this function is valid when 2dfx types are added/removed.
methods.each do |method|
return true if ( ( method =~ regexp_2dfx ) and send( method.to_sym ) )
end
false
end
def is_2dfx_audio_emitter?( )
is_attribute_class?( ATTR_CLASS_2DFX_AUDIO_EMITTER )
end
def is_2dfx_light_shaft?( )
is_attribute_class?( ATTR_CLASS_2DFX_LIGHT_SHAFT )
end
def is_2dfx_proc_object?( )
is_attribute_class?( ATTR_CLASS_2DFX_PROC_OBJECT )
end
def is_2dfx_walk_dont_walk?( )
is_attribute_class?( ATTR_CLASS_2DFX_WALK_DONT_WALK )
end
def is_2dfx_script?( )
is_attribute_class?( ATTR_CLASS_2DFX_SCRIPT )
end
def is_2dfx_ladder?( )
is_attribute_class?( ATTR_CLASS_2DFX_LADDER )
end
def is_2dfx_ledge?( )
is_attribute_class?( ATTR_CLASS_2DFX_LEDGE )
end
def is_2dfx_spawn_point?( )
is_attribute_class?( ATTR_CLASS_2DFX_SPAWN_POINT )
end
def is_2dfx_scrollbars?( )
is_attribute_class?( ATTR_CLASS_2DFX_SCROLLBARS )
end
def is_2dfx_buoyancy?( )
is_attribute_class?( ATTR_CLASS_2DFX_BUOYANCY )
end
def is_2dfx_light_effect?( )
is_attribute_class?( [ATTR_CLASS_2DFX_LIGHT, ATTR_CLASS_2DFX_LIGHT_PHOTO] )
end
def is_2dfx_particle_effect?( )
is_attribute_class?( ATTR_CLASS_2DFX_PARTICLE_EFFECT )
end
def is_2dfx_explosion_effect?( )
is_attribute_class?( ATTR_CLASS_2DFX_EXPLOSION_EFFECT )
end
def is_2dfx_swayable_effect?( )
is_attribute_class?( ATTR_CLASS_2DFX_SWAYABLE_EFFECT )
end
#--------------------------------------------------------------------
# Milo Helper Functions
#--------------------------------------------------------------------
#
# Return true iff the object has one or more mloportal children.
#
def has_mloportal?( )
@children.each do |child|
return ( true ) if ( child.is_mloportal? )
end
false
end
#
# Return number of mloportal children.
#
def num_mloportals( )
portals = 0
@children.each do |child|
portals += 1 if ( child.is_mloportal? )
end
portals
end
#
# Return true iff the object has one or more mloroom children.
#
def has_mloroom?( )
@children.each do |child|
return ( true ) if ( child.is_mloroom? )
end
false
end
#
# Return number of mloroom children.
#
def num_mlorooms( )
rooms = 0
@children.each do |child|
rooms += 1 if ( child.is_mloroom? )
end
rooms
end
#
# Return number of mlo child objects (recursive).
#
def num_mloobjects( node = nil )
node = self if ( node.nil? )
obj_count = 0
node.children.each do |child|
if ( child.is_mloportal? ) then
obj_count += num_mloobjects( child )
elsif ( child.is_mloroom? ) then
obj_count += num_mloobjects( child )
else
obj_count += 1
end
end
obj_count
end
#
# Fetch attribute from object, returning default if its not available.
#
def get_attr( name, default_value )
return @attributes[name].value if ( @attributes.has_key?( name ) )
return default_value
end
#
# Fetch parameter from object, returning default if its not available.
#
def get_param( name, default_value )
return @parameters[name].value if ( @parameters.has_key?( name ) )
return default_value
end
#
# Fetch property from object, returning default if its not available.
#
def get_prop( name, default_value )
return @properties[name].value if ( @properties.has_key?( name ) )
return default_value
end
#--------------------------------------------------------------------
# Private Methods
#--------------------------------------------------------------------
private
#
# Return true iff this object is of the specified Attribute class.
#
def is_attribute_class?( classes )
return ( classes == @attribute_class ) if ( classes.is_a?( String ) )
classes.each do |klass|
return true if ( 0 == klass.casecmp( @attribute_class ) )
end
false
end
#
# Return true iff this object is of the specified 3dsmax class.
#
def is_max_class?( classes )
return ( classes == @classname ) if ( classes.is_a?( String ) )
classes.each do |klass|
return true if ( 0 == klass.casecmp( @classname ) )
end
false
end
#
# Return true iff this object is of the specified 3dsmax superclass.
#
def is_max_superclass?( classes )
return ( classes == @superclass ) if ( classes.is_a?( String ) )
classes.each do |klass|
return true if ( 0 == klass.casecmp( @superclass ) )
end
false
end
end
end # SceneXml module
end # FileFormats module
end # Pipeline module
# scenexml_attrs.rb