The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
This is an abstract base class, and shouldn't be added to a map.
Children of this class are decoration actors – meshes seen by the player in the game that have no AI and are not weapon or inventory pickups. Many decorations are static, but a certain level of interaction can be set.
Usually Static Meshes are used instead of Decoration actors unless the decorative object should be animated or have some special behavior.
See Decoration (UT) for the UT version of this class.
- bool bDamageable
- Whether the Decoration can take damage.
- bool bPushable
- When activated, a player will be able to push the decoration on the floor, e.g. wooden boxes.
- class<Inventory> contents
- spawned when destroyed
- class<Actor> EffectWhenDestroyed
- If set, the pyrotechnic or explosion when item is damaged ?Destroyed.
- Sound EndPushSound
- This sound is played when the decoration stops moving.
- Texture FragSkin
- skin to use for fragments
- class<Fragment> FragType
- type of fragment to use
- int Health
- The amount of damage the Decoration can take before it's destroyed.
- int NumFrags
- Number of fragments to spawn when destroyed.
- Sound PushSound
- This sound is played then the decoration is pushed.
- float SplashTime
- bool bPushSoundPlaying
- The decoration currently plays the PushSound. This variable is reset to false by a Timer function every 0.3 seconds.
- bool bSplash
- vector FragMomentum
- Momentum to be imparted to frags when destroyed. Set when taking damage.
- NavigationPoint LastAnchor (const)
- recent nearest path
- float LastValidAnchorTime
- last time a valid anchor was found
- int numLandings (const)
- Used by engine physics.
- GameObject – important game objects like the BR ball or the CTF flags (not placeable, also see GameObjective)
- xBombDeliveryHole (not placeable)
- xCTFBase (not placeable)
EricBlade: A little tip: In my source tree, decoration defaults to bStatic = true and bStasis = true. This makes it pretty much useless if you don't forget to reset those. I'm not sure if UT2k3/2k4 implements a better version or a replacement for this handy dandy object, but in my game, 99% of the items in game are simply immutable static meshes. I've subbed this, made it default to bStatic and bStasis false, and added code so that it will be burned by Fire. It could probably use some improved method of dealing with sound, as it is now, the sound only plays once per push, wether you push it across a room or across the Sahara desert.
An additional tip: Stacking three of these on top of each other in a game, then pushing them, results in this appearing in the log:
Log: UZGDeco test2.UZGDeco4 fell out of the world at -1.#IND00 -1.#IND00 -1.#IND00! Log: Octree Warning (RemoveActor): UZGDeco4 moved without proper hashing Log: UZGDeco test2.UZGDeco5 fell out of the world at -1.#IND00 -1.#IND00 -1.#IND00! Log: Octree Warning (RemoveActor): UZGDeco5 moved without proper hashing
and then the computer completely and totally locks up.
Also, this seems to quite well show off some pretty serious problems in collision detection inside the game. Even though my meshes have fully functional collision information, pushing a couple of these at each other results in them not colliding until they are several units inside each other. Also, a tester reported that he was able to get inside one of these objects. That same tester also reported a computer crash (with no log) when pushing into one of them. Meh.