You've already forked opendpr
mirror of
https://github.com/TeamLumi/opendpr.git
synced 2026-07-09 18:19:24 -07:00
Made sense of the jumps for UGBaseState
This commit is contained in:
@@ -22,7 +22,6 @@ namespace Dpr.Field.Walking
|
||||
rotSpeed = Random.Range(0.5f, 1.0f);
|
||||
}
|
||||
|
||||
// TODO: holy jumps
|
||||
protected override void StateUpdate()
|
||||
{
|
||||
if (!model.transform.gameObject.activeInHierarchy)
|
||||
@@ -49,13 +48,35 @@ namespace Dpr.Field.Walking
|
||||
if (CheckArrive())
|
||||
{
|
||||
changeTargetTime = 0.0f;
|
||||
// goto LAB_7101ce3b78;
|
||||
|
||||
waitTime = Random.Range(1.0f, 8.0f);
|
||||
colideStopCount++;
|
||||
|
||||
if (collisionCount < 2)
|
||||
{
|
||||
NextMovePoint = GetRandomPoint(model.moveType);
|
||||
|
||||
if (waitTime < 0.0f)
|
||||
{
|
||||
walkData.isNeedRun = false;
|
||||
Move(2.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NextMovePoint = model.transform.position - model.transform.forward;
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (oldChangeTargetTime > 10.0f || collisionCount > 1)
|
||||
{
|
||||
if (oldChangeTargetTime > 10.0f)
|
||||
if (oldChangeTargetTime > 10.0f || (collisionCount < 2 && Random.Range(0, 2) != 0))
|
||||
{
|
||||
if (waitTime < 0.0f)
|
||||
{
|
||||
@@ -66,79 +87,57 @@ namespace Dpr.Field.Walking
|
||||
NextMovePoint = GetRandomPoint(model.moveType);
|
||||
}
|
||||
|
||||
// goto LAB_7101ce3d88;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (collisionCount < 2)
|
||||
{
|
||||
if (Random.Range(0, 2) != 0)
|
||||
{
|
||||
if (waitTime < 0.0f)
|
||||
{
|
||||
rotSpeed = Random.Range(1.0f, 2.0f);
|
||||
colideStopCount = 0;
|
||||
waitTime = -1.0f;
|
||||
changeTargetTime = 0.0f;
|
||||
NextMovePoint = GetRandomPoint(model.moveType);
|
||||
}
|
||||
|
||||
// goto LAB_7101ce3d88;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// LAB_7101ce3b78
|
||||
|
||||
waitTime = Random.Range(1.0f, 8.0f);
|
||||
colideStopCount++;
|
||||
|
||||
var ugModel = model;
|
||||
if (collisionCount < 2)
|
||||
{
|
||||
NextMovePoint = GetRandomPoint(ugModel.moveType);
|
||||
|
||||
// goto joined_r0x007101ce3e00;
|
||||
if (waitTime < 0.0f)
|
||||
{
|
||||
walkData.isNeedRun = false;
|
||||
Move(2.0f);
|
||||
|
||||
if (waitTime < 4.0f)
|
||||
LookAtTarget(NextMovePoint, rotSpeed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NextMovePoint = ugModel.transform.position - model.transform.forward;
|
||||
}
|
||||
}
|
||||
|
||||
walkData.nowSpeed = 0.0f;
|
||||
|
||||
if (waitTime < 4.0f)
|
||||
LookAtTarget(NextMovePoint, rotSpeed);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (collisionCount < 2)
|
||||
{
|
||||
if (waitTime < 0.0f)
|
||||
if (collisionCount < 2 && waitTime < 0.0f)
|
||||
{
|
||||
walkData.isNeedRun = false;
|
||||
Move(2.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
waitTime = Random.Range(1.0f, 8.0f);
|
||||
colideStopCount++;
|
||||
|
||||
if (collisionCount < 2)
|
||||
{
|
||||
NextMovePoint = GetRandomPoint(model.moveType);
|
||||
if (waitTime < 0.0f)
|
||||
{
|
||||
walkData.isNeedRun = false;
|
||||
Move(2.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
|
||||
if (waitTime < 4.0f)
|
||||
LookAtTarget(NextMovePoint, rotSpeed);
|
||||
NextMovePoint = model.transform.position - model.transform.forward;
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (collisionCount < 2 && waitTime < 0.0f)
|
||||
{
|
||||
walkData.isNeedRun = false;
|
||||
Move(2.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
walkData.nowSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (waitTime < 4.0f)
|
||||
LookAtTarget(NextMovePoint, rotSpeed);
|
||||
}
|
||||
|
||||
protected void Move(float speed, float otherDist = 0.0f)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
public class PokemonMaskController
|
||||
@@ -19,11 +20,129 @@ public class PokemonMaskController
|
||||
return Array.IndexOf(_stencilEntries, false);
|
||||
}
|
||||
|
||||
// TODO
|
||||
public static void Register(BaseEntity baseEntity) { }
|
||||
public static void Register(BaseEntity baseEntity)
|
||||
{
|
||||
if (baseEntity == null)
|
||||
return;
|
||||
|
||||
// TODO
|
||||
public static void Unregister(BaseEntity baseEntity) { }
|
||||
var nextEntryIndex = Array.IndexOf(_stencilEntries, false);
|
||||
|
||||
if (_maskGroups.TryGetValue(baseEntity, out _))
|
||||
return;
|
||||
|
||||
var entityName = baseEntity.entityEname;
|
||||
var isGastly = entityName.IndexOf("092") > -1;
|
||||
var isRotom = entityName.IndexOf("0479") > -1;
|
||||
|
||||
var meshes = baseEntity.GetComponentsInChildren<SkinnedMeshRenderer>()
|
||||
.Where(__ => __ != null && __.sharedMaterials != null && __.sharedMaterials.Any(x =>
|
||||
{
|
||||
var shader = x.shader;
|
||||
|
||||
if (shader == null)
|
||||
return false;
|
||||
|
||||
if (shader.name.IndexOf("Core") > -1 ||
|
||||
shader.name.IndexOf("Mask") > -1 ||
|
||||
shader.name.IndexOf("PetrifyFire") > -1)
|
||||
return true;
|
||||
|
||||
return (isGastly || isRotom) &&
|
||||
(shader.name.IndexOf("Bump") > -1 ||
|
||||
shader.name.IndexOf("Petrify") > -1);
|
||||
}));
|
||||
|
||||
var meshesMask = new List<SkinnedMeshRenderer>();
|
||||
var meshesCoreOrPetrify = new List<SkinnedMeshRenderer>();
|
||||
var meshesNeither = new List<SkinnedMeshRenderer>();
|
||||
|
||||
foreach (var mesh in meshes)
|
||||
{
|
||||
var mats = mesh.materials;
|
||||
for (int i=0; i<mats.Length; i++)
|
||||
{
|
||||
var mat = mats[i];
|
||||
var shader = mat.shader;
|
||||
|
||||
if (shader == null)
|
||||
continue;
|
||||
|
||||
var coreOrPetrifyFireShader = shader.name.IndexOf("Core") > -1 || shader.name.IndexOf("PetrifyFire") > -1;
|
||||
var maskShader = shader.name.IndexOf("Mask") > -1;
|
||||
|
||||
if (!coreOrPetrifyFireShader && !maskShader)
|
||||
{
|
||||
mat.SetInt(POKEMON_STENCIL_ID, nextEntryIndex + 136);
|
||||
mat.SetInt(STENCIL_OP_ID, 2);
|
||||
meshesNeither.Add(mesh);
|
||||
}
|
||||
else if (maskShader)
|
||||
{
|
||||
mat.SetInt(ZWRITE_ID, 1);
|
||||
mat.renderQueue = 2451;
|
||||
meshesMask.Add(mesh);
|
||||
|
||||
mat.SetInt(STENCIL_ID, nextEntryIndex + START_STENCIL_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (coreOrPetrifyFireShader)
|
||||
{
|
||||
if (isGastly)
|
||||
mat.SetInt(ZTEST_ID, 5);
|
||||
|
||||
mat.SetInt(ZWRITE_ID, 0);
|
||||
mat.renderQueue = 2500;
|
||||
meshesCoreOrPetrify.Add(mesh);
|
||||
}
|
||||
|
||||
mat.SetInt(STENCIL_ID, nextEntryIndex + START_STENCIL_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (meshesMask.Count != 0 && meshesCoreOrPetrify.Count != 0)
|
||||
{
|
||||
_stencilEntries[nextEntryIndex] = true;
|
||||
_maskGroups.Add(baseEntity, new MaskAndCore()
|
||||
{
|
||||
entryIndex = nextEntryIndex,
|
||||
mask = meshesMask.ToArray(),
|
||||
core = meshesCoreOrPetrify.ToArray(),
|
||||
other = meshesNeither.ToArray(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static void Unregister(BaseEntity baseEntity)
|
||||
{
|
||||
if (!_maskGroups.TryGetValue(baseEntity, out MaskAndCore maskAndCore))
|
||||
return;
|
||||
|
||||
for (int i=0; i<maskAndCore.mask.Length; i++)
|
||||
{
|
||||
var mats = maskAndCore.mask[i].materials;
|
||||
for (int j=0; j<mats.Length; j++)
|
||||
UnityEngine.Object.DestroyImmediate(mats[j]);
|
||||
}
|
||||
|
||||
for (int i=0; i<maskAndCore.core.Length; i++)
|
||||
{
|
||||
var mats = maskAndCore.core[i].materials;
|
||||
for (int j=0; j<mats.Length; j++)
|
||||
UnityEngine.Object.DestroyImmediate(mats[j]);
|
||||
}
|
||||
|
||||
for (int i=0; i<maskAndCore.other.Length; i++)
|
||||
{
|
||||
var mats = maskAndCore.other[i].materials;
|
||||
for (int j=0; j<mats.Length; j++)
|
||||
UnityEngine.Object.DestroyImmediate(mats[j]);
|
||||
}
|
||||
|
||||
_stencilEntries[maskAndCore.entryIndex] = false;
|
||||
_maskGroups.Remove(baseEntity);
|
||||
}
|
||||
|
||||
private struct MaskAndCore
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user