示例#1
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject  instantiated = new GameObject(e.Classname);
            TriggerLink script       = instantiated.AddComponent <TriggerLink>();

            script.ForceFadeColor      = e.GetSpawnflagValue(0, 4);
            script.LinkToSpecificLevel = e.GetSpawnflagValue(1, 4);
            script.ForceSpawnPoint     = e.GetSpawnflagValue(2, 4);
            script.PlayLinkSound       = e.GetSpawnflagValue(3, 4);

            if (script.LinkToSpecificLevel)
            {
                script.LinkedLevel = IOUtil.PathCombine("levels", e.GetPropertyValue("Linked level"));
            }
            if (script.ForceFadeColor)
            {
                script.ForcedLinkColor = EntityUtil.TryParseColor("Forced link color", e);
            }
            if (script.ForceSpawnPoint)
            {
                script.SpawnPointName = e.GetPropertyValue("Spawn point name");
            }

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            instantiated.AddComponent <BoxCollider>().isTrigger = true;

            return(instantiated);
        }
示例#2
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject  instantiated = new GameObject(e.Classname);
            PlayerSpawn script       = instantiated.AddComponent <PlayerSpawn>();

            script.Name = e.GetPropertyValue("Name");
            if (script.Name.Equals(string.Empty))
            {
                Debug.LogWarning("Found player_spawn without name! Please set name in Torii.");
            }

            script.ExcludeFromRandomSpawns = e.GetSpawnflagValue(0, 2);
            script.ForceSpawnOnDayOne      = e.GetSpawnflagValue(1, 2);

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            DreamDirector.PlayerSpawns.Add(script);
            if (script.ForceSpawnOnDayOne)             // player spawn should be forced if it's day 1
            {
                DreamDirector.PlayerSpawnForced = true;
                DreamDirector.ForcedSpawnIndex  = DreamDirector.PlayerSpawns.Count - 1;
            }

            return(instantiated);
        }
示例#3
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject      instantiated = new GameObject(e.Classname);
            TriggerTeleport script       = instantiated.AddComponent <TriggerTeleport>();

            script.TargetName = e.GetPropertyValue("Target name");
            if (script.TargetName.Equals(string.Empty))
            {
                Debug.LogWarning("Trigger_teleport has no target, please fix in Torii!");
            }

            script.FadeOnTeleport = e.GetSpawnflagValue(0, 1);

            if (script.FadeOnTeleport)
            {
                script.FadeColor   = EntityUtil.TryParseColor("Fade color", e);
                script.FadeInTime  = EntityUtil.TryParseFloat("Fade in time", e);
                script.FadeOutTime = EntityUtil.TryParseFloat("Fade out time", e);
            }

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            instantiated.AddComponent <BoxCollider>().isTrigger = true;

            return(instantiated);
        }
示例#4
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject        instantiated = new GameObject(e.Classname);
            AudioSourceObject script       = instantiated.AddComponent <AudioSourceObject>();

            script.Source = instantiated.AddComponent <AudioSource>();

            script.AudioClip   = e.GetPropertyValue("Audio clip");
            script.MinDistance = EntityUtil.TryParseFloat("Min distance", e);

            script.LoopAudio = e.GetSpawnflagValue(0, 1);

            if (script.LoopAudio)
            {
                script.LoopDelay = EntityUtil.TryParseFloat("Loop delay", e);
            }

            script.Source.loop                  = script.LoopAudio;
            script.Source.minDistance           = script.MinDistance;
            script.Source.spatialBlend          = 1;    // 3D audio
            script.Source.outputAudioMixerGroup = _masterMixer.FindMatchingGroups("SFX")[0];

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            script.StartCoroutine(IOUtil.LoadOGGIntoSource(IOUtil.PathCombine("sfx", script.AudioClip), script.Source));

            return(instantiated);
        }
示例#5
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject       instantiated     = new GameObject(e.Classname);
            DreamEnvironment dreamEnvironment = instantiated.AddComponent <DreamEnvironment>();

            dreamEnvironment.Staticity = EntityUtil.TryParseInt("Staticity", e);
            dreamEnvironment.Happiness = EntityUtil.TryParseInt("Happiness", e);

            dreamEnvironment.SpawnGreyman    = e.GetSpawnflagValue(0, 10);
            dreamEnvironment.ForceSkyColor   = e.GetSpawnflagValue(1, 10);
            dreamEnvironment.ForceFogColor   = e.GetSpawnflagValue(2, 10);
            dreamEnvironment.MusicEnabled    = e.GetSpawnflagValue(3, 10);
            dreamEnvironment.UseSun          = e.GetSpawnflagValue(4, 10);
            dreamEnvironment.UseClouds       = e.GetSpawnflagValue(5, 10);
            dreamEnvironment.UseSunburst     = e.GetSpawnflagValue(6, 10);
            dreamEnvironment.ForceCloudColor = e.GetSpawnflagValue(7, 10);
            dreamEnvironment.UseGradient     = e.GetSpawnflagValue(8, 10);
            dreamEnvironment.ForceSunColor   = e.GetSpawnflagValue(9, 10);

            if (dreamEnvironment.ForceSkyColor)
            {
                dreamEnvironment.SkyColor = EntityUtil.TryParseColor("Sky color", e);
            }
            if (dreamEnvironment.ForceFogColor)
            {
                dreamEnvironment.FogColor = EntityUtil.TryParseColor("Fog color", e);
            }
            if (dreamEnvironment.ForceCloudColor)
            {
                dreamEnvironment.CloudColor = EntityUtil.TryParseColor("Cloud color", e);
            }
            if (dreamEnvironment.ForceSunColor)
            {
                dreamEnvironment.SunColor = EntityUtil.TryParseColor("Sun color", e);
            }

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            GameObject.FindGameObjectWithTag("EnvironmentController")
            .GetComponent <EnvironmentController>()
            .EnvironmentEntity = dreamEnvironment;

            DreamDirector.CanSpawnGreyman = dreamEnvironment.SpawnGreyman;

            return(instantiated);
        }
示例#6
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject instantiated = new GameObject(e.Classname);
            MapObject  script       = instantiated.AddComponent <MapObject>();

            script.MapSrc      = e.GetPropertyValue("Map src");
            script.LinkedLevel = e.GetPropertyValue("Linked level");

            script.ForceFadeColor      = e.GetSpawnflagValue(0, 4);
            script.LinkToSpecificLevel = e.GetSpawnflagValue(1, 4);
            script.DisableLinking      = e.GetSpawnflagValue(2, 4);

            script.IsSolid = e.GetSpawnflagValue(3, 4);

            if (script.ForceFadeColor)
            {
                script.FadeColor = EntityUtil.TryParseColor("Fade color", e);
            }

            GameObject meshObject = IOUtil.LoadMap(script.MapSrc, ResourceLifespan.LEVEL);

            meshObject.transform.SetParent(instantiated.transform);

            if (!script.DisableLinking)
            {
                MeshCollider[] colliders = instantiated.GetComponentsInChildren <MeshCollider>();
                foreach (MeshCollider c in colliders)
                {
                    c.gameObject.tag = "Linkable";
                }
            }

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            return(instantiated);
        }
示例#7
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject     instantiated   = new GameObject(e.Classname);
            ActionSequence actionSequence = instantiated.AddComponent <ActionSequence>();

            actionSequence.SequenceName = e.GetPropertyValue("Sequence name");
            if (actionSequence.SequenceName.Equals(string.Empty))
            {
                Debug.Log("Found action_sequence without name! Please set name in Torii.");
            }
            actionSequence.NextSequence = e.GetPropertyValue("Next sequence");

            actionSequence.TimesToLoop = EntityUtil.TryParseInt("Times to loop", e);

            actionSequence.BeginOnLevelLoad = e.GetSpawnflagValue(0, 3);
            actionSequence.LoopSequence     = e.GetSpawnflagValue(1, 3);
            actionSequence.HasNextSequence  = e.GetSpawnflagValue(2, 3);

            Sequences.Add(actionSequence);

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            return(instantiated);
        }
示例#8
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject  instantiated = new GameObject(e.Classname);
            ModelObject script       = instantiated.AddComponent <ModelObject>();

            script.ModelSrc     = e.GetPropertyValue("Model src");
            script.LinkedLevel  = e.GetPropertyValue("Linked level");
            script.AudioClip    = e.GetPropertyValue("Audio clip");
            script.MinDistance  = EntityUtil.TryParseFloat("Min distance", e);
            script.SequenceName = e.GetPropertyValue("Sequence name");

            script.ForceFadeColor      = e.GetSpawnflagValue(0, 6);
            script.LinkToSpecificLevel = e.GetSpawnflagValue(1, 6);
            script.DisableLinking      = e.GetSpawnflagValue(2, 6);
            script.IsSolid             = e.GetSpawnflagValue(3, 6);
            script.PlayAudio           = e.GetSpawnflagValue(4, 6);
            script.HasActionSequence   = e.GetSpawnflagValue(5, 6);

            GameObject meshObject = IOUtil.LoadObject(script.ModelSrc, script.IsSolid, ResourceLifespan.LEVEL);

            meshObject.transform.SetParent(instantiated.transform);

            script.Source              = instantiated.AddComponent <AudioSource>();
            script.Source.playOnAwake  = false;
            script.Source.loop         = false;
            script.Source.spatialBlend = 1;             // 3D audio
            script.Source.minDistance  = script.MinDistance;

            if (!script.DisableLinking)
            {
                MeshCollider[] colliders = instantiated.GetComponentsInChildren <MeshCollider>();
                foreach (MeshCollider c in colliders)
                {
                    c.gameObject.tag = "Linkable";
                }
            }

            if (script.ForceFadeColor)
            {
                script.FadeColor = EntityUtil.TryParseColor("Fade color", e);
            }
            if (script.PlayAudio)
            {
                script.StartCoroutine(IOUtil.LoadOGGIntoSource(IOUtil.PathCombine("sfx", script.AudioClip), script.Source));
                script.LoopDelay = EntityUtil.TryParseFloat("Loop delay", e);
            }
            if (script.HasActionSequence)
            {
                DreamDirector.PostLoadEvent += script.PostLoad;
            }

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            return(instantiated);
        }
示例#9
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject instantiated = new GameObject(e.Classname);
            MoveAction actionScript = instantiated.AddComponent <MoveAction>();

            actionScript.Name             = e.GetPropertyValue("Sequence name");
            actionScript.SequencePosition = EntityUtil.TryParseInt("Sequence position", e);
            actionScript.TargetName       = e.GetPropertyValue("Target name");
            actionScript.MoveSpeed        = EntityUtil.TryParseFloat("Move speed", e);
            actionScript.FaceMovementDir  = e.GetSpawnflagValue(0, 1);

            DreamDirector.PostLoadEvent += actionScript.PostLoad;

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            return(instantiated);
        }
示例#10
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject   instantiated = new GameObject(e.Classname);
            TriggerSound script       = instantiated.AddComponent <TriggerSound>();

            script.SoundSrc = e.GetPropertyValue("Sound src");

            script.OnceOnly = e.GetSpawnflagValue(0, 1);

            script.Source                       = instantiated.AddComponent <AudioSource>();
            script.Source.loop                  = false;
            script.Source.spatialBlend          = 0;    // 2D audio
            script.Source.playOnAwake           = false;
            script.Source.outputAudioMixerGroup = _masterMixer.FindMatchingGroups("SFX")[0];

            script.StartCoroutine(IOUtil.LoadOGGIntoSource(IOUtil.PathCombine("sfx", script.SoundSrc), script.Source));

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            instantiated.AddComponent <BoxCollider>().isTrigger = true;

            return(instantiated);
        }
示例#11
0
        public static GameObject Instantiate(ENTITY e)
        {
            GameObject      instantiated = new GameObject(e.Classname);
            MusicController script       = instantiated.AddComponent <MusicController>();

            script.Source                       = instantiated.AddComponent <AudioSource>();
            script.Source.loop                  = true;
            script.Source.spatialBlend          = 0;    // 2d audio
            script.Source.outputAudioMixerGroup = _masterMixer.FindMatchingGroups("Music")[0];

            script.MusicDirectory = IOUtil.PathCombine("music", e.GetPropertyValue("Music directory"));

            script.UseSubDirectories = e.GetSpawnflagValue(0, 1);

            string selectedDir = IOUtil.PathCombine(Application.streamingAssetsPath, script.MusicDirectory);

            if (script.UseSubDirectories)
            {
                string[] dirsToChooseFrom = Directory.GetDirectories(IOUtil.PathCombine(Application.streamingAssetsPath, script.MusicDirectory));
                selectedDir = RandUtil.RandomArrayElement(dirsToChooseFrom);
                Debug.Log("Selected " + selectedDir);
            }

            string[] tracksToChooseFrom = Directory.GetFiles(selectedDir, "*.ogg");
            string   selectedTrack      = RandUtil.RandomArrayElement(tracksToChooseFrom);

            Debug.Log("Chose track: " + selectedTrack);

            DreamDirector.CurrentlyPlayingSong = Path.GetFileNameWithoutExtension(selectedTrack);

            script.StartCoroutine(IOUtil.LoadOGGIntoSource(selectedTrack, script.Source, true, true));

            EntityUtil.SetInstantiatedObjectTransform(e, ref instantiated);

            return(instantiated);
        }