public static IEnumerable <T> QueryProximity <T>(BoundingBox bbox, EntityFlags flags = 0) where T : EntityBase { return(GetEntitiesCommon <T>(NativeEntityMethods.QueryProximity(bbox, typeof(T).Name, flags))); }
public void SwitchToLightObject(ref LightParams lightParams) { NativeEntityMethods.BindAttachmentToLight(Handle, ref lightParams); }
/// <summary> /// Gets an array of entities that are of a given class. /// </summary> /// <typeparam name="T">The entity class to search for.</typeparam> /// <returns>An array of entities of type T.</returns> public static IEnumerable <T> GetByClass <T>() where T : EntityBase { return(GetEntitiesCommon <T>(NativeEntityMethods.GetEntitiesByClass(typeof(T).Name))); }
/// <summary> /// Gets a list of entities within the specified area. /// </summary> /// <param name="bbox"></param> /// <param name="flags"></param> /// <returns></returns> public static IEnumerable <T> GetInBox <T>(BoundingBox bbox, EntityQueryFlags flags = EntityQueryFlags.All) where T : EntityBase { return(GetEntitiesCommon <T>(NativeEntityMethods.GetEntitiesInBox(bbox, flags))); }
/// <summary> /// Sets the absolute of the specified joint /// </summary> /// <param name="jointName">Name of the joint</param> /// <param name="absolute">New absolute</param> /// <param name="characterSlot">Slot containing the character</param> public void SetJointAbsolute(string jointName, QuatT absolute, int characterSlot = 0) { NativeEntityMethods.SetJointAbsolute(this.GetIEntity(), jointName, characterSlot, absolute); }
public ParticleEmitter LoadParticleEmitter(ParticleEffect particleEffect, ref ParticleSpawnParameters spawnParams, int slot = -1) { return(ParticleEmitter.TryGet(NativeEntityMethods.LoadParticleEmitter(this.GetIEntity(), slot, particleEffect.Handle, ref spawnParams))); }
public static Area GetArea(int areaId) { return(TryGet(NativeEntityMethods.GetArea(areaId))); }
/// <summary> /// Requests movement at the specified slot, providing an animated character is currently loaded. /// </summary> /// <param name="request"></param> public void AddMovement(ref EntityMovementRequest request) { NativeEntityMethods.AddMovement(this.GetIAnimatedCharacter(), ref request); }
void LoadPlugins(bool initialLoad) { var pluginsDirectory = PathUtils.PluginsFolder; if (!Directory.Exists(pluginsDirectory)) { return; } bool hasDefaultGameRules = false; foreach (var directory in Directory.GetDirectories(pluginsDirectory)) { var compilerDll = Path.Combine(directory, "Compiler.dll"); if (File.Exists(compilerDll)) { var assembly = LoadAssembly(compilerDll); var compilerType = assembly.GetTypes().First(x => x.Implements <ScriptCompiler>()); Debug.LogAlways(" Initializing {0}...", compilerType.Name); var compiler = Activator.CreateInstance(compilerType) as ScriptCompiler; var assemblyPaths = Directory.GetFiles(directory, "*.dll", SearchOption.AllDirectories); var assemblies = new List <Assembly>(); foreach (var assemblyPath in assemblyPaths) { if (assemblyPath != compilerDll) { assemblies.Add(LoadAssembly(assemblyPath)); } } var scripts = compiler.Process(assemblies); foreach (var unprocessedScript in scripts) { var script = unprocessedScript; if (initialLoad) { if (script.RegistrationParams == null) { continue; } else if (script.RegistrationParams is ActorRegistrationParams) { var registrationParams = (ActorRegistrationParams)script.RegistrationParams; NativeActorMethods.RegisterActorClass(script.ScriptName, script.Type.Implements(typeof(NativeActor))); } else if (script.RegistrationParams is EntityRegistrationParams) { var registrationParams = (EntityRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } if (registrationParams.category == null) { registrationParams.category = "Default"; } NativeEntityMethods.RegisterEntityClass(registrationParams); script.RegistrationParams = registrationParams; } else if (script.RegistrationParams is GameRulesRegistrationParams) { var registrationParams = (GameRulesRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } NativeGameRulesMethods.RegisterGameMode(registrationParams.name); if (registrationParams.defaultGamemode || !hasDefaultGameRules) { NativeGameRulesMethods.SetDefaultGameMode(registrationParams.name); hasDefaultGameRules = true; } script.RegistrationParams = registrationParams; } else if (script.RegistrationParams is FlowNodeRegistrationParams) { var registrationParams = (FlowNodeRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } if (registrationParams.category == null) { registrationParams.category = script.Type.Namespace; } if (registrationParams.filter == 0) { registrationParams.filter = FlowNodeFilter.Approved; } script.RegistrationParams = registrationParams; script.ScriptName = registrationParams.category + ":" + registrationParams.name; } else if (script.RegistrationParams is EntityFlowNodeRegistrationParams) { var registrationParams = (EntityFlowNodeRegistrationParams)script.RegistrationParams; script.ScriptName = "entity" + ":" + registrationParams.entityName; } } Scripts.Add(script); } } } }
void ProcessWaitingScripts(bool initialLoad) { bool hasDefaultGameRules = false; foreach (var pluginPair in PluginTypes) { ICryMonoPlugin plugin = pluginPair.Key; foreach (Type type in pluginPair.Value) { var script = FindScript(ScriptType.Any, x => x.Type == type); if (script == null) { if (!CryScript.TryCreate(type, out script)) { continue; } } script.RegistrationParams = plugin.GetRegistrationParams(script.ScriptType, type); if (!script.Registered) { if (script == null || script.RegistrationParams == null) { continue; } // Contain types that can only be registered at startup here. if (initialLoad) { if (script.RegistrationParams is ActorRegistrationParams) { var registrationParams = (ActorRegistrationParams)script.RegistrationParams; NativeActorMethods.RegisterActorClass(script.ScriptName, script.Type.Implements(typeof(NativeActor)), registrationParams.isAI); } else if (script.RegistrationParams is EntityRegistrationParams) { var registrationParams = (EntityRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } if (registrationParams.category == null) { registrationParams.category = "Default"; } NativeEntityMethods.RegisterEntityClass(registrationParams); script.RegistrationParams = registrationParams; } } if (script.RegistrationParams is GameRulesRegistrationParams) { var registrationParams = (GameRulesRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } NativeGameRulesMethods.RegisterGameMode(registrationParams.name); if (registrationParams.defaultGamemode || !hasDefaultGameRules) { NativeGameRulesMethods.SetDefaultGameMode(registrationParams.name); hasDefaultGameRules = true; } script.RegistrationParams = registrationParams; } else if (script.RegistrationParams is FlowNodeRegistrationParams) { var registrationParams = (FlowNodeRegistrationParams)script.RegistrationParams; if (registrationParams.name == null) { registrationParams.name = script.ScriptName; } if (registrationParams.category == null) { registrationParams.category = script.Type.Namespace; } if (registrationParams.filter == 0) { registrationParams.filter = FlowNodeFilter.Approved; } script.RegistrationParams = registrationParams; script.ScriptName = registrationParams.category + ":" + registrationParams.name; } else if (script.RegistrationParams is EntityFlowNodeRegistrationParams) { var registrationParams = (EntityFlowNodeRegistrationParams)script.RegistrationParams; script.ScriptName = "entity" + ":" + registrationParams.entityName; } script.Registered = true; Scripts.Add(script); } } } }
public void Break(BreakageParameters breakageParams) { NativeEntityMethods.BreakIntoPieces(Owner.GetIEntity(), 0, 0, breakageParams); }
public void ClearBinding() { NativeEntityMethods.ClearAttachmentBinding(Handle); }
public void SwitchToParticleEffectObject(ParticleEffect effect, Vec3 offset, Vec3 dir, float scale) { NativeEntityMethods.BindAttachmentToParticleEffect(Handle, effect.Handle, offset, dir, scale); }
/// <summary> /// Plays a raw animation. /// </summary> /// <param name="animationName">Name of the animation we wish to play</param> /// <param name="flags"></param> /// <param name="slot">Slot on which to play the animation</param> /// <param name="layer">Animation layer to play the animation in.</param> /// <param name="blend">Transition time between two animations.</param> /// <param name="speed">Animation playback speed</param> public void PlayAnimation(string animationName, AnimationFlags flags = 0, int slot = 0, int layer = 0, float blend = 0.175f, float speed = 1.0f) { NativeEntityMethods.PlayAnimation(this.GetIEntity(), animationName, slot, layer, blend, speed, flags); }
public static IEnumerable <AreaQueryResult> QueryAreas(EntityId id, Vec3 pos, int maxResults, bool forceCalculation) { var objAreas = NativeEntityMethods.QueryAreas(id, pos, maxResults, forceCalculation); return(objAreas.Cast <AreaQueryResult>()); }
/// <summary> /// Frees the specified slot of all objects. /// </summary> /// <param name="slot"></param> public void FreeSlot(int slot) { NativeEntityMethods.FreeSlot(this.GetIEntity(), slot); }
public EntityId GetEntityIdByIndex(int index) { return(NativeEntityMethods.GetAreaEntityByIdx(Handle, index)); }
/// <summary> /// Gets the absolute of the specified joint /// </summary> /// <param name="jointName">Name of the joint</param> /// <param name="characterSlot">Slot containing the character</param> /// <returns>Absolute of the specified joint</returns> public QuatT GetJointAbsolute(string jointName, int characterSlot = 0) { return(NativeEntityMethods.GetJointAbsolute(this.GetIEntity(), jointName, characterSlot)); }
/// <summary> /// Retrieves the flags of the specified slot. /// </summary> /// <param name="slot">Index of the slot</param> /// <returns>The slot flags, or 0 if specified slot is not valid.</returns> public EntitySlotFlags GetSlotFlags(int slot = 0) { return(NativeEntityMethods.GetSlotFlags(this.GetIEntity(), slot)); }
/// <summary> /// Gets the default relative of the specified joint /// </summary> /// <param name="jointName">Name of the joint</param> /// <param name="characterSlot">Slot containing the character</param> /// <returns>Default relative of the specified joint</returns> public QuatT GetJointRelativeDefault(string jointName, int characterSlot = 0) { return(NativeEntityMethods.GetJointRelativeDefault(this.GetIEntity(), jointName, characterSlot)); }
/// <summary> /// Sets the flags of the specified slot. /// </summary> /// <param name="flags">Flags to set.</param> /// <param name="slot">Index of the slot, if -1 apply to all existing slots.</param> public void SetSlotFlags(EntitySlotFlags flags, int slot = 0) { NativeEntityMethods.SetSlotFlags(this.GetIEntity(), slot, flags); }
/// <summary> /// Invalidate the TriggerBounds, so it gets recalculated and catches things which are already inside when it gets enabled. /// </summary> public void InvalidateTrigger() { NativeEntityMethods.InvalidateTrigger(this.GetIEntity());; }
/// <summary> /// Gets the number of attachments at the specified character slot. /// </summary> /// <param name="characterSlot">Index of the slot we wish to get the attachment count of</param> /// <returns>Number of attachments at the specified slot</returns> public int GetAttachmentCount(int characterSlot = 0) { return(NativeEntityMethods.GetAttachmentCount(this.GetIEntity(), characterSlot)); }
public static IEnumerable <EntityBase> GetByClasses(string[] classNames) { return(GetEntitiesCommon <Entity>(NativeEntityMethods.GetEntitiesByClasses(classNames.Cast <object>().ToArray()))); }
/// <summary> /// Loads a light source to the specified slot, or to the next available slot. /// </summary> /// <param name="parameters">New params of the light source we wish to load</param> /// <param name="slot">Slot we want to load the light into, if -1 chooses the next available slot.</param> /// <returns>The slot where the light source was loaded, or -1 if loading failed.</returns> public int LoadLight(LightParams parameters, int slot = 1) { return(NativeEntityMethods.LoadLight(this.GetIEntity(), slot, parameters)); }
public static IEnumerable <EntityBase> QueryProximity(BoundingBox bbox, string className, EntityFlags flags = 0) { return(GetEntitiesCommon <EntityBase>(NativeEntityMethods.QueryProximity(bbox, className, flags))); }
/// <summary> /// Gets the path to the currently loaded object. /// </summary> /// <param name="slot">Slot containing the object we want to know the path of.</param> /// <returns>Path to the currently loaded object at the specified slot.</returns> public string GetObjectFilePath(int slot = 0) { return(NativeEntityMethods.GetStaticObjectFilePath(this.GetIEntity(), slot)); }
public static EntityLink Create(EntityBase parent, EntityBase slave, string linkName, Vec3?relativePos = null, Quat?relativeRot = null) { return(new EntityLink(NativeEntityMethods.AddEntityLink(parent.GetIEntity(), linkName, slave.Id, relativeRot ?? Quat.Identity, relativePos ?? Vec3.Zero), parent)); }
public void SwitchToEntityObject(EntityId entityId) { NativeEntityMethods.BindAttachmentToEntity(Handle, entityId); }