示例#1
0
 public static string ClassName(plCreatableID type)
 {
     if (Enum.IsDefined(typeof(plCreatableID), type))
         return Enum.GetName(typeof(plCreatableID), type);
     else
         throw new plFactoryException(String.Format("Internal Type 0x{0} is not defined", type.ToString("XXXX")));
 }
示例#2
0
 /// <summary>
 /// Creates an instance of a plCreatable with the given internal type
 /// </summary>
 /// <param name="type">The internal/universal plCreatableID of the plCreatable to create</param>
 /// <returns>The new plCreatable</returns>
 /// <exception cref="plFacotoryException">The CreatableID (type) is invalid/unknown</exception>
 public static plCreatable Create(plCreatableID type)
 {
     switch (type) {
         case plCreatableID.plAvatarInputStateMsg:
             return new plAvatarInputStateMsg();
         case plCreatableID.plClientGuid:
             return new plClientGuid();
         case plCreatableID.plConsoleMsg:
             return new plConsoleMsg();
         case plCreatableID.pfKIMsg:
             return new pfKIMsg();
         case plCreatableID.plLinkEffectsTriggerMsg:
             return new plLinkEffectsTriggerMsg();
         case plCreatableID.plLinkEffectsTriggerPrepMsg:
             return new plLinkEffectsTriggerPrepMsg();
         case plCreatableID.plLoadAvatarMsg:
             return new plLoadAvatarMsg();
         case plCreatableID.plLoadCloneMsg:
             return new plLoadCloneMsg();
         case plCreatableID.plNetMsgGameMessage:
             return new plNetMsgGameMessage();
         case plCreatableID.plNetMsgGameMessageDirected:
             return new plNetMsgGameMessageDirected();
         case plCreatableID.plNetMsgGroupOwner:
             return new plNetMsgGroupOwner();
         case plCreatableID.plNetMsgLoadClone:
             return new plNetMsgLoadClone();
         case plCreatableID.plNetMsgMemberInfoHelper:
             return new plNetMsgMemberInfoHelper();
         case plCreatableID.plNetMsgMembersList:
             return new plNetMsgMembersList();
         case plCreatableID.plNetMsgPing:
             return new plNetMsgPing();
         case plCreatableID.plNetMsgSDLState:
             return new plNetMsgSDLState();
         case plCreatableID.plNetMsgSDLStateBCast:
             return new plNetMsgSDLStateBCast();
         case plCreatableID.plNetMsgVoice:
             return new plNetMsgVoice();
         case plCreatableID.plNotifyMsg:
             return new plNotifyMsg();
         case plCreatableID.plSceneNode:
             return new plSceneNode();
         case plCreatableID.plSceneObject:
             return new plSceneObject();
         case plCreatableID.NULL:
             return null;
         default:
             if (Enum.IsDefined(typeof(plCreatableID), type)) {
                 string name = plManagedType.ClassName(type);
                 plDebugLog.GetLog("Factory").Warn(
                     String.Format("Couldn't create a(n) {0} because it is not implemented yet",
                     name));
                 throw new NotImplementedException(name);
             } else
                 throw new plFactoryException("Unknown plCreatableID");
     }
 }
示例#3
0
 internal plKey(plCreatableID type, string objName)
 {
     fKeyData = new plUoid(type, objName);
 }
示例#4
0
        public void Read(hsStream s)
        {
            ContentsFlags contents = (ContentsFlags)s.ReadByte();
            fLocation.Read(s);
            if ((contents & ContentsFlags.kHasLoadMask) != 0)
                if (!s.Version.IsPlasma21) fLoadMask.Read(s);
            fClassType = plManagedType.Read(s);
            if (s.Version.IsUruLive || s.Version.IsPlasma21)
                fObjectID = s.ReadUInt();
            fObjectName = s.ReadSafeString();
            if (s.Version.IsPlasma20) {
                if ((contents & ContentsFlags.kHasCloneIDs) != 0) {
                    fCloneID = s.ReadUInt();
                    fClonePlayerID = s.ReadUInt();
                }
            }

            if ((contents & (ContentsFlags.kHasLoadMask | ContentsFlags.kHasLoadMask2)) != 0)
                if (s.Version.IsPlasma21)
                    fLoadMask.Read(s);
        }
示例#5
0
 internal plUoid(plCreatableID type, string name)
 {
     fObjectName = name;
     fClassType = type;
 }
示例#6
0
 /// <summary>
 /// Creates a FAKE plKey based on the information given.
 /// </summary>
 /// <remarks>
 /// This key will NOT be added to (or checked by) the internal KeyCollector; therefore, you should 
 /// ONLY use this method if you know what you're doing! Othwerise, you will create duplicate keys
 /// and completely screw the garbage collection.
 /// </remarks>
 /// <param name="loc">Key's Location</param>
 /// <param name="type">Managed Type ID</param>
 /// <param name="name">Object Name</param>
 /// <param name="id">Object ID</param>
 /// <returns>Fabricated key</returns>
 public static plKey Fabricate(plLocation loc, plCreatableID type, string name, uint id)
 {
     plUoid uoid = new plUoid(type, name);
     uoid.fLocation = loc;
     uoid.fObjectID = id;
     return new plKey(uoid);
 }
示例#7
0
 /// <summary>
 /// Gets a friendly, user consumable name for the specified Plasma Type
 /// </summary>
 /// <param name="type">The universal type</param>
 /// <returns>Friendly class name</returns>
 public static string FriendlyClassName(plCreatableID type)
 {
     switch (type) {
         case plCreatableID.plActivatorConditionalObject:
             return "Activator Conditional Object";
         case plCreatableID.plAGAnim:
             return "AG Animation";
         case plCreatableID.plAGMasterMod:
             return "AG Master Modifier";
         case plCreatableID.plAGModifier:
             return "AG Modifier";
         case plCreatableID.plATCAnim:
             return "ATC Animation";
         case plCreatableID.plAudioInterface:
             return "Audio Interface";
         case plCreatableID.plCameraBrainUru:
             return "Camera Brain (Uru)";
         case plCreatableID.plCameraBrainUru_Avatar:
             return "Camera Brain (Avatar)";
         case plCreatableID.plCameraBrainUru_Fixed:
             return "Camera Brain (Fixed)";
         case plCreatableID.plCameraBrainUru_POA:
             return "Camera Brain (Point on Avatar)";
         case plCreatableID.plCameraModifier1:
             return "Camera Modifier";
         case plCreatableID.plCameraRegionDetector:
             return "Camera Region Detector";
         case plCreatableID.plClusterGroup:
             return "Cluster Group";
         case plCreatableID.plCoordinateInterface:
             return "Coordinate Interface";
         case plCreatableID.plCubicEnvironmap:
             return "Cubic Environment Map";
         case plCreatableID.plDirectShadowMaster:
             return "Shadow Master (Direct)";
         case plCreatableID.plDirectionalLightInfo:
             return "Light Info (Directional)";
         case plCreatableID.plDrawableSpans:
             return "Drawable Spans";
         case plCreatableID.plDrawInterface:
             return "Draw Interface";
         case plCreatableID.plDynaFootMgr:
             return "Dynamic Foot Manager";
         case plCreatableID.plDynaRippleMgr:
             return "Dynamic Ripple Manager";
         case plCreatableID.plDynaRippleVSMgr:
             return "Dynamic Ripple VS Manager";
         case plCreatableID.plDynamicCamMap:
             return "Dynamic Camera Map";
         case plCreatableID.plDynamicEnvMap:
             return "Dynamic Environment Map";
         case plCreatableID.plDynamicTextMap:
             return "Dynamic Text Map";
         case plCreatableID.plEAXListenerMod:
             return "EAX Listener Modifier";
         case plCreatableID.plEAXReverbEffect:
             return "EAX Reverb Effect";
         case plCreatableID.plFacingConditionalObject:
             return "Facing Conditional Object";
         case plCreatableID.hsGMaterial:
             return "Material";
         case plCreatableID.plHKPhysical:
             return "Physical (Havok)";
         case plCreatableID.plInterfaceInfoModifier:
             return "Interface Info Modifier";
         case plCreatableID.plLadderModifier:
             return "Ladder Modifier";
         case plCreatableID.plLayerAnimation:
             return "Layer Animation";
         case plCreatableID.plLineFollowMod:
             return "Line Follow Modifier";
         case plCreatableID.plLogicModifier:
             return "Logic Modifier";
         case plCreatableID.plMsgForwarder:
             return "Message Forwarder";
         case plCreatableID.plMultistageBehMod:
             return "Multistage Behavior Modifier";
         case plCreatableID.plNPCSpawnMod:
             return "NPC Spawn Modifier";
         case plCreatableID.plODEPhysical:
             return "Physical (ODE)";
         case plCreatableID.plObjectInBoxConditionalObject:
             return "Object in Box Conditional Object";
         case plCreatableID.plObjectInVolumeAndFacingDetector:
             return "Object in Volume and Facing Detector";
         case plCreatableID.plObjectInVolumeDetector:
             return "Object in Volume Detector";
         case plCreatableID.plOmniLightInfo:
             return "Light Info (Omni)";
         case plCreatableID.plOneShotMod:
             return "One Shot Modifier";
         case plCreatableID.plPanicLinkRegion:
             return "Panic Link Region";
         case plCreatableID.plParticleFlockEffect:
             return "Particle Effect (Flock)";
         case plCreatableID.plParticleSystem:
             return "Particle System";
         case plCreatableID.plPhysicalSndGroup:
             return "Physical Sound Group";
         case plCreatableID.plPickingDetector:
             return "Picking Detector";
         case plCreatableID.plPointShadowMaster:
             return "Shadow Master (Point)";
         case plCreatableID.plPXPhysical:
             return "Physical (PhysX)";
         case plCreatableID.plPythonFileMod:
             return "Python File Modifier";
         case plCreatableID.plPythonFileModConditionalObject:
             return "Python File Conditional Object";
         case plCreatableID.plRailCameraMod:
             return "Rail Camera Modifier";
         case plCreatableID.plRandomSoundMod:
             return "Random Sound Modifier";
         case plCreatableID.plRelevanceRegion:
             return "Relevance Region";
         case plCreatableID.plResponderModifier:
             return "Responder Modifier";
         case plCreatableID.plSceneNode:
             return "Scene Node";
         case plCreatableID.plSceneObject:
             return "Scene Object";
         case plCreatableID.plShadowCaster:
             return "Shadow Caster";
         case plCreatableID.plSimulationInterface:
             return "Simulation Interface";
         case plCreatableID.plSoftVolumeComplex:
             return "Soft Volume (Complex)";
         case plCreatableID.plSoftVolumeIntersect:
             return "Soft Volume (Intersect)";
         case plCreatableID.plSoftVolumeInvert:
             return "Soft Volume (Invert)";
         case plCreatableID.plSoftVolumeSimple:
             return "Soft Volume (Simple)";
         case plCreatableID.plSoftVolumeUnion:
             return "Soft Volume (Union)";
         case plCreatableID.plSoundBuffer:
             return "Sound Buffer";
         case plCreatableID.plSpawnMod:
         case plCreatableID.plSpawnModifier:
             return "Spawn Modifier";
         case plCreatableID.plSpotLightInfo:
             return "Light Info (Spot)";
         case plCreatableID.plSwimCircularCurrentRegion:
             return "Swim Current Region (Circular)";
         case plCreatableID.plSwimStraightCurrentRegion:
             return "Swim Current Region (Circular)";
         case plCreatableID.plSwimDetector:
             return "Swim Detector";
         case plCreatableID.plSwimRegionInterface:
             return "Swim Region Interface";
         case plCreatableID.plViewFaceModifier:
             return "View Face Modifier";
         case plCreatableID.plVisRegion:
             return "Visibility Region";
         case plCreatableID.plVolumeSensorConditionalObject:
             return "Volume Sensor Conditional Object";
         case plCreatableID.plVolumeSensorConditionalObjectNoArbitration:
             return "Volume Sensor Conditional Object w/o Arbitration";
         case plCreatableID.plWaveSet7:
             return "Wave Set 7";
         case plCreatableID.plWinAudible:
             return "Win Audible";
         case plCreatableID.plWin32StaticSound:
             return "Win32 Static Sound";
         case plCreatableID.plWin32StreamingSound:
             return "Win32 Streaming Sound";
         default:
             string ugly = ((plCreatableID)type).ToString();
             plDebugLog.GetLog("Factory").Warn(String.Format("FIXME: {0} has no friendly name!", ugly));
             return ugly.Substring(2);
     }
 }
示例#8
0
        public static void Write(hsStream s, plCreatableID data)
        {
            if (fTypeMaps == null)
                IBuildTypeMaps();

            plCreatableID type = (plCreatableID)data;
            ushort end = (ushort)plCreatableID.NULL;

            foreach (KeyValuePair<plTypeBounds, Type> kvp in fTypeMaps) {
                if (kvp.Key.UpperBoundary >= s.Version && s.Version >= kvp.Key.LowerBoundary) {
                    string value = Enum.GetName(typeof(plCreatableID), type);
                    end = (ushort)Enum.Parse(kvp.Value, value);
                }
            }

            //Note: We must adjust < PotS IDs...
            if (s.Version < plVersion.PathOfTheShell)
                if (end > (ushort)UruTypes.plAvatarSpawnNotifyMsg)
                    end--;
            //End type adjustment

            s.WriteUShort(end);
        }
示例#9
0
 public IList<plKey> GetKeys(plLocation loc, plCreatableID type)
 {
     return fKeyCollector.GetKeys(loc, type);
 }
示例#10
0
 public plKey FindKey(plLocation loc, plCreatableID type, string name)
 {
     return fKeyCollector.FindKey(loc, type, name);
 }